R:沃尔德测试:"Error in solve.default(vc[ovar, ovar]) : 'a' is 0-diml"

R: Waldtest: "Error in solve.default(vc[ovar, ovar]) : 'a' is 0-diml"

如果我的问题已经有了答案,我很抱歉提出我的问题。到目前为止,我找不到一个。

我目前正在做债券财务数据的回归。 Objective 我的回归是确定两个债券投资组合是否显示出显着不同的收益率。 我控制 4 个变量(V1 到 V4)以控制其他风险来源。

回归公式如下:

([=42= 的一个回归,"Low-Portfolio" 的一个回归)

ield(p)=∝(p)+ 1(p)*V1+2(p)*V2+3(p)*V3(p)+4(p)*V4(p)  

在 R 中产生以下代码:

   Regression_High <- lm(T_Portfolio ~ T_Slope +T_Credit+T_Ratingscore+ T_Duration)


 (construct variables for Low-Portfolio)


   Regression_Low <- lm(T_Portfolio ~ T_Slope +T_Credit+T_Ratingscore+ T_Duration)

现在的想法是比较两个截距以确定两个投资组合是否显示不同的收益率。

因此,我想使用 Wald 检验来确定截距的联合显着性:检验统计量呈渐近 x² 分布 具有 2 个自由度。

library(aod)
library(lmtest)
Vcov=vcov(Regression_High,Regression_Low)

1. waldtest(Regression_High, Regression_Low, vcov=Vcov,test="Chisq",name=NULL)

2. waldtest(Regression_High, Regression_Low, test="Chisq")

我的两次尝试都产生了以下错误消息:

Error in solve.default(vc[ovar, ovar]) : 'a' is 0-diml

有谁知道如何正确进行waldtest或者我的错误在哪里?

如有任何意见或建议,我们将不胜感激。

亲切的问候,

西蒙

可重现的例子:

#loading packages
library(plm)
library(aod)
library(lmtest)

#Data "High-Portfolio"
y=rnorm(10)
v1=rnorm(10)
v2=rnorm(10)
v3=rnorm(10)
v4=rnorm(10)

#Regression 1

lm1<-lm(y~v1+v2+v3+v4)

#Data "Low-Portfolio"
y=rnorm(10)
v1=rnorm(10)
v2=rnorm(10)
v3=rnorm(10)
v4=rnorm(10)

#Regression 2 

lm2<-lm(y~v1+v2+v3+v4)

#Waldtest
library(aod)
library(lmtest)
Vcov=vcov(lm1,lm2)

#Attempt 1
waldtest(lm1,lm2, vcov=Vcov,test="Chisq",name=NULL)

#Attempt 2
waldtest(lm1, lm2, test="Chisq")

据我了解,waldtest 在同一对象上使用两个不同的模型(而不是在两个不同的对象上使用两个模型)。您的两个模型需要不同的变量才能达到 运行。 错误出现在:solve(vc[ovar, ovar]),并告诉您 vc[ovar, ovar] 没有任何维度。这就是ovar的来源

ovar <- which(!(names(coef0(fm1)) %in% names(coef0(fm0))))

fm1fm0是你的两个模型,它们有相同的变量。