r - 如何使用 R 中的 lm() 函数从回归中删除无关紧要的因子水平?

标签 r regression linear-regression

当我在 R 中执行回归并使用类型因子时,它可以帮助我避免在数据中设置分类变量。但是我如何从回归中删除一个不显着的因素来只显示显着的变量呢?

例如:

dependent <- c(1:10)
independent1 <- as.factor(c('d','a','a','a','a','a','a','b','b','c'))
independent2 <- c(-0.71,0.30,1.32,0.30,2.78,0.85,-0.25,-1.08,-0.94,1.33)
output <- lm(dependent ~ independent1+independent2)
summary(output)

这导致以下回归模型:
Coefficients:
          Estimate Std. Error t value Pr(>|t|)   
(Intercept)     4.6180     1.0398   4.441  0.00676 **
independent1b   3.7471     2.1477   1.745  0.14148   
independent1c   5.5597     2.0736   2.681  0.04376 * 
independent1d  -3.7129     2.3984  -1.548  0.18230   
independent2   -0.1336     0.7880  -0.170  0.87203   

如果我想删除无关紧要的独立1级别(b,d),有没有办法做到这一点?

在这种情况下,将数据设置为具有分类变量很容易,但是当我包含周数或其他具有很多级别的因素时,它变得不方便。

这是使用分类变量构建模型的方法。正如你所看到的,结构数据最终变得更加痛苦,但也给了我更多的控制权。
regressionData <- data.frame(cbind(1:10,c(-0.71,0.30,1.32,0.30,2.78,0.85,-0.25,-1.08,-0.94,1.33),c(0,1,1,1,1,1,1,0,0,0),c(0,0,0,0,0,0,0,1,1,0),c(0,0,0,0,0,0,0,0,0,1),c(1,0,0,0,0,0,0,0,0,0)))

names(output) = c('dependent','independent2','independenta', 'independentb','independentc','independentd')

attach(regressionData)

result <- lm(dependent~independent2+independentb+independentc+independentd)
summary(result)

现在我可以删除independent2,因为它微不足道
result <- lm(dependent~independentb+independentc+independentd)
summary(result)

我将删除独立,因为它并不重要
result <- lm(dependent~independentb+independentc)
summary(result)

但在这种情况下,调整后的 R 平方下降(我什至不打算进行部分 F 检验),因为它很重要,但在许多情况下,这不是真的,我需要从回归中删除分类,因为它是吃掉在这种情况下很重要的自由度,并可能掩盖其他重要变量的值。

最佳答案

您可以使用选项 exclude 删除因子变量的水平。 :

lm(dependent ~ factor(independent1, exclude=c('b','d')) + independent2)

这样,因子 b、d 将不包括在回归中。

干杯

关于r - 如何使用 R 中的 lm() 函数从回归中删除无关紧要的因子水平?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12326357/

相关文章:

machine-learning - 如何处理对数据集中的多列应用 One Hot Encoding 后产生的大量恐惧?

objective-c - Objective-C 或 C 中的线性回归

R:将列表数据转换为数据框

algorithm - 2变量非线性搜索算法

r - 如何以编程方式取消、推导、反编译、反向工程用于构造数据集中变量的算法

python - 我如何修复此语句,我的代码不适用于 tensorflow ?

r - 为什么单行 xts 对象没有获取时区? (为什么它忽略/覆盖默认参数)

r - 通过根据每个 ID 的行数扩展列来展平行

r - 数据未从 R 中的命名空间导出

python - 更好地拟合幂律曲线