我适合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'没有帮助)。
答案 0 :(得分:6)
在您的代码scale
中na.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