R中的Anova函数(汽车库)出错
Error with Anova function (car library) in R
我正在进行多元多元回归。
作为响应变量,我有一个函数 [ y(t) ],我在 27 个点的网格和 3 个标量回归量(x1,x2,x3 )。
我已经用 nxq (q=27) 矩阵 Y 替换了响应函数,我需要解决的是:
Y = XB + E
其中 X [nxp (p=3)] 是 x1,x2,x3 列堆叠, B 是回归系数的 p×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
如果问题与矩阵的非奇异性有关,请问如何使用伪逆?
编辑----------------
我将您的数据放在 gist 中,因此可以轻松获取。实际上,我从 car
中获取了 Anova()
函数。我认为不同之处在于将所有数据放入数据框(在本例中为 tibble),然后使用 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
我正在进行多元多元回归。 作为响应变量,我有一个函数 [ y(t) ],我在 27 个点的网格和 3 个标量回归量(x1,x2,x3 )。 我已经用 nxq (q=27) 矩阵 Y 替换了响应函数,我需要解决的是:
Y = XB + E
其中 X [nxp (p=3)] 是 x1,x2,x3 列堆叠, B 是回归系数的 p×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
如果问题与矩阵的非奇异性有关,请问如何使用伪逆?
编辑----------------
我将您的数据放在 gist 中,因此可以轻松获取。实际上,我从 car
中获取了 Anova()
函数。我认为不同之处在于将所有数据放入数据框(在本例中为 tibble),然后使用 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