R:Coeftest 导致错误

标签 r error-handling linear-regression

我正在执行 Newey-West 检验以评估具有异方差和自相关残差的回归估计量。

我正在使用“三明治”和“lmtest”包。

虽然我可以轻松地重现在其他网站上找到的示例,但我自己的脚本会导致错误:

dimnames(cd) <- list(as.character(index(x)), colnames(x)) 中的错误:“dimnames”应用于非数组

我的代码:

ffregression <- lm(ex.return ~ fff$Mkt.RF + fff$SMB + fff$HML)
coeftest(ffregression,vcov=NeweyWest)

str(回归):
List of 12
 $ coefficients : Named num [1:4] 0.00604 0.72976 0.90351 0.13548
  ..- attr(*, "names")= chr [1:4] "(Intercept)" "fff$Mkt.RF" "fff$SMB" "fff$HML"
 $ residuals    :An ‘xts’ object on Mar 2014/Dec 2016 containing:
  Data: num [1:34] -0.03637 0.0408 -0.00672 0.04648 -0.02275 ...
  Indexed by objects of class: [yearmon] TZ: 
  Original class: 'double'  
  xts Attributes:  
 NULL
 $ effects      :An ‘xts’ object on Mar 2014/Dec 2016 containing:
  Data: num [1:34] -0.0606 0.1785 0.1379 0.0204 -0.0262 ...
  Indexed by objects of class: [yearmon] TZ: 
  Original class: 'double'  
  xts Attributes:  
 NULL
 $ rank         : int 4
 $ fitted.values:An ‘xts’ object on Mar 2014/Dec 2016 containing:
  Data: num [1:34] -0.000725 -0.031716 0.003868 0.051386 -0.047005 ...
  Indexed by objects of class: [yearmon] TZ: 
  Original class: 'double'  
  xts Attributes:  
 NULL
 $ assign       : int [1:4] 0 1 2 3
 $ qr           :List of 5
  ..$ qr   : num [1:34, 1:4] -5.831 0.171 0.171 0.171 0.171 ...
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : chr [1:34] "1" "2" "3" "4" ...
  .. .. ..$ : chr [1:4] "(Intercept)" "fff$Mkt.RF" "fff$SMB" "fff$HML"
  .. ..- attr(*, "assign")= int [1:4] 0 1 2 3
  ..$ qraux: num [1:4] 1.17 1.05 1.14 1.14
  ..$ pivot: int [1:4] 1 2 3 4
  ..$ tol  : num 1e-07
  ..$ rank : int 4
  ..- attr(*, "class")= chr "qr"
 $ df.residual  : int 30
 $ xlevels      : Named list()
 $ call         : language lm(formula = ex.return ~ fff$Mkt.RF + fff$SMB + fff$HML)
 $ terms        :Classes 'terms', 'formula'  language ex.return ~ fff$Mkt.RF + fff$SMB + fff$HML
  .. ..- attr(*, "variables")= language list(ex.return, fff$Mkt.RF, fff$SMB, fff$HML)
  .. ..- attr(*, "factors")= int [1:4, 1:3] 0 1 0 0 0 0 1 0 0 0 ...
  .. .. ..- attr(*, "dimnames")=List of 2
  .. .. .. ..$ : chr [1:4] "ex.return" "fff$Mkt.RF" "fff$SMB" "fff$HML"
  .. .. .. ..$ : chr [1:3] "fff$Mkt.RF" "fff$SMB" "fff$HML"
  .. ..- attr(*, "term.labels")= chr [1:3] "fff$Mkt.RF" "fff$SMB" "fff$HML"
  .. ..- attr(*, "order")= int [1:3] 1 1 1
  .. ..- attr(*, "intercept")= int 1
  .. ..- attr(*, "response")= int 1
  .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
  .. ..- attr(*, "predvars")= language list(ex.return, fff$Mkt.RF, fff$SMB, fff$HML)
  .. ..- attr(*, "dataClasses")= Named chr [1:4] "nmatrix.1" "nmatrix.1" "nmatrix.1" "nmatrix.1"
  .. .. ..- attr(*, "names")= chr [1:4] "ex.return" "fff$Mkt.RF" "fff$SMB" "fff$HML"
 $ model        :'data.frame':  34 obs. of  4 variables:
  ..$ ex.return :An ‘xts’ object on Mar 2014/Dec 2016 containing:
  Data: num [1:34, 1] -0.03709 0.00909 -0.00285 0.09786 -0.06975 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr "RF"
  Indexed by objects of class: [yearmon] TZ: 
  Original class: 'double'  
  xts Attributes:  
 NULL
  ..$ fff$Mkt.RF:An ‘xts’ object on Mar 2014/Dec 2016 containing:
  Data: num [1:34, 1] 0.0043 -0.0019 0.0206 0.0261 -0.0204 0.0424 -0.0197 0.0252 0.0255 -0.0006 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr "Mkt.RF"
  Indexed by objects of class: [yearmon] TZ: 
  xts Attributes:  
 NULL
  ..$ fff$SMB   :An ‘xts’ object on Mar 2014/Dec 2016 containing:
  Data: num [1:34, 1] -0.0185 -0.0419 -0.0185 0.0301 -0.0422 0.004 -0.038 0.0428 -0.0205 0.0259 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr "SMB"
  Indexed by objects of class: [yearmon] TZ: 
  xts Attributes:  
 NULL
  ..$ fff$HML   :An ‘xts’ object on Mar 2014/Dec 2016 containing:
  Data: num [1:34, 1] 0.0503 0.011 -0.0036 -0.0066 -0.0002 -0.0055 -0.0119 -0.0168 -0.0298 0.0212 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr "HML"
  Indexed by objects of class: [yearmon] TZ: 
  xts Attributes:  
 NULL
  ..- attr(*, "terms")=Classes 'terms', 'formula'  language ex.return ~ fff$Mkt.RF + fff$SMB + fff$HML
  .. .. ..- attr(*, "variables")= language list(ex.return, fff$Mkt.RF, fff$SMB, fff$HML)
  .. .. ..- attr(*, "factors")= int [1:4, 1:3] 0 1 0 0 0 0 1 0 0 0 ...
  .. .. .. ..- attr(*, "dimnames")=List of 2
  .. .. .. .. ..$ : chr [1:4] "ex.return" "fff$Mkt.RF" "fff$SMB" "fff$HML"
  .. .. .. .. ..$ : chr [1:3] "fff$Mkt.RF" "fff$SMB" "fff$HML"
  .. .. ..- attr(*, "term.labels")= chr [1:3] "fff$Mkt.RF" "fff$SMB" "fff$HML"
  .. .. ..- attr(*, "order")= int [1:3] 1 1 1
  .. .. ..- attr(*, "intercept")= int 1
  .. .. ..- attr(*, "response")= int 1
  .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
  .. .. ..- attr(*, "predvars")= language list(ex.return, fff$Mkt.RF, fff$SMB, fff$HML)
  .. .. ..- attr(*, "dataClasses")= Named chr [1:4] "nmatrix.1" "nmatrix.1" "nmatrix.1" "nmatrix.1"
  .. .. .. ..- attr(*, "names")= chr [1:4] "ex.return" "fff$Mkt.RF" "fff$SMB" "fff$HML"
 - attr(*, "class")= chr "lm"

例子:
set.seed(04012017)
n<-34
correlated_residuals<-arima.sim(list(ar = .9), n)
y<-correlated_residuals
x<-1:n
plot(x,correlated_residuals)
fit<-lm(y~x)
abline(fit)
summary(fit) # standard estimates
coeftest(fit,vcov=NeweyWest(fit,verbose=T))

str(适合):
List of 12
 $ coefficients : Named num [1:2] -0.179 0.148
  ..- attr(*, "names")= chr [1:2] "(Intercept)" "x"
 $ residuals    : Named num [1:34] -0.9529 0.976 0.3025 -0.0486 -1.1214 ...
  ..- attr(*, "names")= chr [1:34] "1" "2" "3" "4" ...
 $ effects      : Named num [1:34] -14.026 8.449 0.25 -0.085 -1.142 ...
  ..- attr(*, "names")= chr [1:34] "(Intercept)" "x" "" "" ...
 $ rank         : int 2
 $ fitted.values: Named num [1:34] -0.0314 0.1163 0.264 0.4116 0.5593 ...
  ..- attr(*, "names")= chr [1:34] "1" "2" "3" "4" ...
 $ assign       : int [1:2] 0 1
 $ qr           :List of 5
  ..$ qr   : num [1:34, 1:2] -5.831 0.171 0.171 0.171 0.171 ...
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : chr [1:34] "1" "2" "3" "4" ...
  .. .. ..$ : chr [1:2] "(Intercept)" "x"
  .. ..- attr(*, "assign")= int [1:2] 0 1
  ..$ qraux: num [1:2] 1.17 1.23
  ..$ pivot: int [1:2] 1 2
  ..$ tol  : num 1e-07
  ..$ rank : int 2
  ..- attr(*, "class")= chr "qr"
 $ df.residual  : int 32
 $ xlevels      : Named list()
 $ call         : language lm(formula = y ~ x)
 $ terms        :Classes 'terms', 'formula'  language y ~ x
  .. ..- attr(*, "variables")= language list(y, x)
  .. ..- attr(*, "factors")= int [1:2, 1] 0 1
  .. .. ..- attr(*, "dimnames")=List of 2
  .. .. .. ..$ : chr [1:2] "y" "x"
  .. .. .. ..$ : chr "x"
  .. ..- attr(*, "term.labels")= chr "x"
  .. ..- attr(*, "order")= int 1
  .. ..- attr(*, "intercept")= int 1
  .. ..- attr(*, "response")= int 1
  .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
  .. ..- attr(*, "predvars")= language list(y, x)
  .. ..- attr(*, "dataClasses")= Named chr [1:2] "numeric" "numeric"
  .. .. ..- attr(*, "names")= chr [1:2] "y" "x"
 $ model        :'data.frame':  34 obs. of  2 variables:
  ..$ y: num [1:34] -0.984 1.092 0.566 0.363 -0.562 ...
  ..$ x: int [1:34] 1 2 3 4 5 6 7 8 9 10 ...
  ..- attr(*, "terms")=Classes 'terms', 'formula'  language y ~ x
  .. .. ..- attr(*, "variables")= language list(y, x)
  .. .. ..- attr(*, "factors")= int [1:2, 1] 0 1
  .. .. .. ..- attr(*, "dimnames")=List of 2
  .. .. .. .. ..$ : chr [1:2] "y" "x"
  .. .. .. .. ..$ : chr "x"
  .. .. ..- attr(*, "term.labels")= chr "x"
  .. .. ..- attr(*, "order")= int 1
  .. .. ..- attr(*, "intercept")= int 1
  .. .. ..- attr(*, "response")= int 1
  .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
  .. .. ..- attr(*, "predvars")= language list(y, x)
  .. .. ..- attr(*, "dataClasses")= Named chr [1:2] "numeric" "numeric"
  .. .. .. ..- attr(*, "names")= chr [1:2] "y" "x"
 - attr(*, "class")= chr "lm"

最佳答案

看来R提示它无法分配 dimnames因为您的数据来自非数组。尝试只使用一个xts对象代替您的数据。

fff$ex.return <- ex.return
ffregression <- lm(ex.return ~ Mkt.RF + SMB + HML, data = fff)
coeftest(ffregression,vcov=NeweyWest)

关于R:Coeftest 导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45248388/

相关文章:

Python:为什么我的线性回归图给出了许多凌乱的彩色线?

2 变量线性回归方程

R:当电子邮件有多个域名后缀时,如何将电子邮件拆分为多个部分?

r - 如何创建一个空列表?

r - 在 r 中的 for 循环内绘制多个图

c - sscanf 返回奇怪的错误

node.js - 如何使用 async/await 进行正确的错误处理

r - ggplot 将图例的一部分斜体化为多行

xml - 我需要帮助弄清楚我不断收到的这个令人困惑的 “Build Failed”错误

matplotlib - 使用 matplotlib 绘制 scikit learn 线性回归结果