lm函数给出y变量的估计也
问题描述:
我想运行一个简单的lm模型。我使用以下lm函数给出y变量的估计也
dt <- data.table(
y=rnorm(100,0,1),
x1=rnorm(100,0,1),
x2=rnorm(100,0,1),
x3=rnorm(100,0,1))
y_var2 <- names(dt)[names(dt)%like%"y"]
x_var2 <- names(dt)[names(dt)%like%"x"]
tmp2 <- summary(a <- lm(get(y_var2)~.,dt[,c(x_var2,y_var2),with=F]))
coefs2 <- as.data.table(tmp2$coefficients,keep.rownames = T)
那么到底,coefs2
应包含估计,p值等,但coefs2
的最后一排,我也看到了Y型变量。
但是,如果使用
tmp2 <- summary(a <- lm(y~.,dt[,c(x_var2,y_var2),with=F]))
那么这种情况不会发生。这是为什么 ?
答
这与R如何存储变量有关。 y_var2是一个字符“y”,并将其填入公式中作为字符变量,您希望使用data.table dt中的所有变量进行建模。但是,你必须告诉R你希望评估公式y〜。而不是“y”〜。这是R的两个不同的表达式。
lm(formula(paste(y_var2,"~.")),dt[,c(x_var2,y_var2),with=F])
将做的伎俩。公式从构造表达式的字符串变量中构造一个公式。
答
其实它很可能是清洁只是为了与reformulate()
公式和lm
tmp2 <- summary(a <- lm(reformulate(x_var2, y_var2), dt))
的
data=
参数