r-按显着p值的子集变量



我正在尝试通过重要的p值来子集变量,我尝试使用以下代码,但它仅选择所有变量而不是按条件选择。谁能帮我纠正问题?

myvars <- names(summary(backward_lm)$coefficients[,4] < 0.05)
happiness_reduced <- happiness_nomis[myvars]

谢谢!

使用broom软件包(在评论部分中)的Martin出色答案的替代解决方案。不幸的是,您尚未发布数据,因此我将mtcars数据集用作演示:

library(broom)
# build model
m = lm(disp ~ ., data = mtcars)
# create a dataframe frm model's output
tm = tidy(m)
# visualise dataframe of the model
# (using non scientific notation of numbers)
options(scipen = 999)
tm
#           term    estimate   std.error   statistic       p.value
# 1  (Intercept)  -5.8119829 228.0609389 -0.02548434 0.97990925639
# 2          mpg   1.9398052   2.5976340  0.74675849 0.46348865035
# 3          cyl  15.3889587  12.1518291  1.26639032 0.21924091701
# 4           hp   0.6649525   0.2259928  2.94236093 0.00777972543
# 5         drat   8.8116809  19.7390767  0.44640796 0.65987184728
# 6           wt  86.7111730  16.1127236  5.38153418 0.00002448671
# 7         qsec -12.9742622   8.6227190 -1.50466021 0.14730421493
# 8           vs -12.1152075  25.2579953 -0.47965832 0.63642812949
# 9           am  -7.9135864  25.6183932 -0.30890253 0.76043942893
# 10        gear   5.1265224  18.0578153  0.28389494 0.77927112074
# 11        carb -30.1067073   7.5513212 -3.98694566 0.00067029676
# get variables with p value less than 0.05
tm$term[tm$p.value < 0.05]
# [1] "hp"   "wt"   "carb"

主要优点是,通过获取模型的输出作为数据框架,您可以使用变量名称,而不是可变位置和行名来操纵数据。

我正在使用options(scipen = 999)来更容易检查过滤作用(即不使用数据框中的数字的科学符号)。

最新更新