我正在R中执行一系列年度横截面回归,从Excel工作簿中导入数据,其中每张工作表对应一年,这些从1995年到2018年。我面临两个问题,第一个是我不明白我怎么能把系数列表和它们的p-第二个问题是,当我将每个模型的bp和bg测试合并到循环中时,它会抛出以下错误:
Error in y - z$residuals : non-numeric argument to binary operator
字符串
头(datos)是:
x1c 0d1x的数据
该数据集可在https://wormhole.app/opeBQ#NVBkLHzguFPUVY0N4hbErg
脚本如下:
library(lmtest)
library(olsrr)
library(tseries)
library(readxl)
library(openxlsx)
library(dplyr)
años <- 1995:2018
resultados <- list()
for (año in años) {
# Define el nombre del archivo Excel (puedes modificarlo según tus necesidades)
archivo_excel <- "C:/Users/Kevin/Desktop/Bases/base_Regresiones.xlsx"
# Importa los datos desde la hoja correspondiente al año
datos <- read_excel(archivo_excel, sheet = as.character(año))
# Realiza la regresión con tus datos. Por ejemplo, aquí se asume que tienes dos columnas: 'variable_independiente' y 'variable_dependiente'.
modelo <- lm(y ~ ., data = datos)
# Calcula los estadísticos requeridos
r_squared <- summary(modelo)$r.squared
f_statistic <- summary(modelo)$fstatistic[1]
ssr <- deviance(modelo)
jb_test <- jarque.bera.test(residuals(modelo))
bg_test <- bgtest(modelo)
bp_test <- bptest(modelo)
# Almacena los resultados en la lista, incluyendo el R-squared y el estadístico F
resultados[[as.character(año)]] <- list(
Año = año,
R_squared = r_squared,
F_statistic = f_statistic,
u_squad = ssr,
JBtest = jb_test$p.value,
bgtest = bg_test$p.value,
bptest = bp_test$p.value
)
}
# Crear un DataFrame a partir de la lista de resultados
resultados_df <- do.call(rbind, resultados)
型
我得到了这个结果
Año R_squared F_statistic u_squad JBtest
1995 1995 0.9480865 148.5375 10.46748 0.4176042
1996 1996 0.9485575 149.972 10.31898 0.2332913
1997 1997 0.9462563 142.0284 10.8743 0.3334412
1998 1998 0.9464819 143.84 10.8509 0.5535448
1999 1999 0.9475053 145.5997 10.57655 0.4754198
2000 2000 0.9472141 144.7519 10.81674 0.3440291
2001 2001 0.9504769 156.0998 10.27286 0.8708391
2002 2002 0.9494986 151.6648 10.43004 0.8408953
2003 2003 0.9502323 155.2925 10.36924 0.6420716
2004 2004 0.9501257 154.9432 10.38435 0.8029328
2005 2005 0.9498327 153.991 10.4385 0.2381718
2006 2006 0.9518624 160.8269 10.04476 0.3467262
2007 2007 0.9513862 159.1718 10.17184 0.3430534
2008 2008 0.9468287 144.8315 10.96748 0.4548003
2009 2009 0.9525406 163.2413 9.350981 0.5795036
2010 2010 0.948046 148.4155 10.10924 0.6508358
2011 2011 0.9510188 157.9168 9.487844 0.5200191
2012 2012 0.948731 150.507 9.751045 0.5669693
2013 2013 0.9453135 140.5932 10.37591 0.4488269
2014 2014 0.9465016 143.8963 10.07656 0.4465016
2015 2015 0.9469356 145.1395 10.06823 0.2957086
2016 2016 0.9479821 148.223 9.874893 0.2328414
2017 2017 0.9452753 140.4895 10.42455 0.1856073
2018 2018 0.9451515 140.154 10.45936 0.2261362
型
我希望得到如下内容:
的
1条答案
按热度按时间nxagd54h1#
底线:我认为你需要同时使用
bptest
和bgtest
的公式接口,即尝试字符串
我对测试不够熟悉(也不熟悉你的数据),无法确切地知道,但我相信
bgtest
不知道如何处理"lm"
类的对象。下面是一个演示,使用来自?bptest
的示例数据作为起点:型
它使用
Error:
进行测试而没有 * 失败 * 的事实并不意味着它是正确的。关于partial match
的警告告诉我,它试图在内部将"lm"
对象转换为它知道如何处理的对象。当出现“部分匹配”警告时,这意味着我们的x
变量在这里实际上被解释为xlevels=
,这肯定不是我们认为应该发生的事情。