本文介绍了r:waldtest:";solve.default(vc[ovar,ovar]):';a';is 0-diml";的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果我的问题已经有了答案,我很抱歉问了我的问题。到目前为止,我找不到一个。
我目前正在对债券的财务数据做回归。我回归的目的是确定两个债券投资组合的收益率是否有显着差异。我控制4个变量(V1到V4)以控制其他风险来源。
回归公式如下:
("高投资组合"一次回归,"低投资组合"一次回归)
𝑌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,或者我的错误在哪里?
如有任何意见或建议,我们将不胜感激。
向您致以亲切的问候
Simon
可复制示例:
#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))))
fm1
和fm0
是您的两个模型,它们具有相同的变量。
这篇关于r:waldtest:";solve.default(vc[ovar,ovar]):';a';is 0-diml";的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!