0

我正在进行多元多元回归。作为响应变量,我有一个函数 [ y(t) ],我已在 27 个点的网格和 3 个标量回归量 ( x1,x2,x3 ) 上离散化。我已经用 nxq (q=27) 矩阵Y替换了响应函数,我需要解决的是:

Y = XB + E

其中X [nxp (p=3)] 是x1,x2,x3列堆叠,B是回归系数的 ap×q 矩阵,E是 n×q 误差矩阵。到目前为止,我所做的是调用 lm:mylm<-lm(Y ~ X)它在预测变量上分别回归每个因变量。

现在我想确定一个预测变量是否对我得到的所有 27 个模型都有贡献,但我不知道如何克服我得到的错误。当我打电话时,Anova这就是我得到的

Anova(mylm)

Error in eigen(qr.coef(if (repeated) qr(x$SSPE[[term]]) else SSPE.qr,  : 
  infinite or missing values in 'x'

并且,例如,如果我想测试 x2 在统计上是否不同于 0,我会得到以下信息

hyp =c(0,0,1,0)
rhs =rep(0,27)
lh.out <- linearHypothesis(mylm, hyp,rhs)

Error in linearHypothesis.mlm(mylm, hyp, rhs) : 
  The error SSP matrix is apparently of deficient rank = 25 < 27

如果问题与矩阵的非奇异性有关,我该如何要求使用伪逆?

编辑 - - - - - - -

在这里你可以找到我的数据

4

1 回答 1

2

我把你的数据放在这个gist中,所以可以很容易地获取它。我实际上是从这个Anova()函数car开始工作的。我认为不同之处在于将所有数据放在一个数据框(或在这种情况下为小标题)中,然后cbind()用于创建多变量 DV。

source("https://gist.githubusercontent.com/davidaarmstrong/469e2159d4802bae6fa09bad34527df0/raw/a25a02280841f4df3c6d8c10720f404586498b13/github_data1.r")

mydat <- cbind(Y, X)
mylm <- lm(cbind(V1, V2, V3, V4, V5, V6, V7, 
                 V8, V9, V10, V11, V12, V13, 
                 V14, V15, V16, V17, V18, V19, 
                 V20, V21, V22, V23, V24, V25) ~ 
             PC1D + PC2D + PC1H, data=mydat)
Anova(mylm)
# Type II MANOVA Tests: Pillai test statistic
#      Df test stat approx F num Df den Df    Pr(>F)    
# PC1D  1   0.20085    4.424     25    440 3.981e-11 ***
# PC2D  1   0.18632    4.030     25    440 9.065e-10 ***
# PC1H  1   0.71205   43.522     25    440 < 2.2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

于 2020-11-01T21:06:21.617 回答