R中lm函数的估计与相关性不匹配(数据与NA)

时间:2014-02-02 15:11:57

标签: r statistics linear-regression

我适合lm模型

x <- c(0.1, 0.3, 0.2, 0.5, NA, 0.1, 0.8, 0.4)
y <- c(0.3, 0.2, 0.5, NA, 0.4, 0.5, 0.2, 0.4)
fit1<-lm(scale(y) ~ scale(x), na.action=na.omit)
summary(fit1)

这给了我一个标准化的估计-0.593 当我应用函数'cor'时,它给出的值为-0.577。 如果我从两个向量子集完整案例,即

x2 <- c(0.1, 0.3, 0.2, 0.1, 0.8, 0.4)
y2 <- c(0.3, 0.2, 0.5, 0.5, 0.2, 0.4)

然后适合lm

fit2<-lm(scale(y2) ~ scale(x2))
summary(fit2)

标准化估算与'cor'( - 0.577)的情况相同。我认为简单回归中的标准化估计和相关系数应该相同。问题是fit1有什么问题? (使用'na.action = na.excluse'没有帮助)。

1 个答案:

答案 0 :(得分:6)

在您的代码scalena.omit之前应用lm。比较这两个:

DF <- data.frame(x, y) 
na.omit(scale(DF))
scale(na.omit(DF))

然后使用它:

fit1<-lm(scale(y) ~ scale(x), data=na.omit(DF))

all.equal(unname(coef(fit1)[2]),
          cor(na.omit(DF))[1,2])
#[1] TRUE