代码之家  ›  专栏  ›  技术社区  ›  dakofla

R: Waldtest:“求解时出错。默认值(vc[ovar,ovar]):“a”为0-diml”

  •  0
  • dakofla  · 技术社区  · 8 年前

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

    我目前正在对债券的财务数据进行回归分析。我回归的目的是确定两种债券组合是否显示出显著不同的收益率。 Im控制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吗?或者我的错误在哪里?

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

    谨致问候,

    西蒙

    可复制示例:

    #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")
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   De Novo    8 年前

    据我所知,waldtest在同一对象上采用两个不同的模型(而不是在两个不同对象上采用两个模型)。两个模型中需要不同的变量才能运行。 错误发生在: solve(vc[ovar, ovar]) ,并告诉你 vc[ovar, ovar] 没有任何尺寸。这就是 ovar 来自

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

    fm1 fm0 是您的两个模型,它们具有相同的变量。