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=参数