Как вставить в список в R имена переменных регрессоров с pvalue ниже 5% - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь создать список в R, который содержит все имена регрессоров, которые имеют значение pval ниже 5% -ого порога.Например:

первая регрессия

#gender (male - female)
regr1 <- lm(salary ~ female, data = test)
summary(regr1)

вывод первой регрессии:

 Coefficients:
         Estimate Std. Error t value Pr(>|t|)    
 (Intercept)  0.855618   0.001888  453.24   <2e-16 ***
 female      -0.054514   0.003088  -17.65   <2e-16 ***

вторая регрессия:

#education (PhD - Master - Bachelor - HighSchool - None)
regr2 <- lm(salary ~ Master + Bachelor + HighSchool + None, data = test)
summary(regr2)

вывести вторую регрессию:

Coefficients:
        Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.91008    0.02829  32.164  < 2e-16 ***
Master      -0.05446    0.02836  -1.920 0.054811 .  
Bachelor    -0.10291    0.02848  -3.613 0.000303 ***
HighSchool  -0.10173    0.02911  -3.495 0.000475 ***
None        -0.12590    0.02864  -4.396 1.11e-05 ***

Хозяин переменной не имеет значения, поэтому я не хочу его в списке.Вот список, который я хотел бы получить:

varnames <- c("female", "Bachelor", "HighSchool", "None")  

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

В базе R вы можете сделать что-то вроде следующего:

lr1 <- lm(Sepal.Length ~ ., data = iris) 
coef_table <- coef(summary(tab))

row.names(coef_table)[coef_table[, "Pr(>|t|)"] < 0.001]
# "(Intercept)"  "Sepal.Width"  "Petal.Length"
0 голосов
/ 28 февраля 2019

Вы можете использовать broom::tidy и затем манипулировать таблицей, например так:

library(tidyverse)

tab <- lm(data = mtcars, mpg ~ cyl + disp + hp) %>% summary() %>% broom::tidy()
tab
# A tibble: 4 x 5
  term        estimate std.error statistic  p.value
  <chr>          <dbl>     <dbl>     <dbl>    <dbl>
1 (Intercept)  34.2       2.59       13.2  1.54e-13
2 cyl          -1.23      0.797      -1.54 1.35e- 1
3 disp         -0.0188    0.0104     -1.81 8.09e- 2
4 hp           -0.0147    0.0147     -1.00 3.25e- 1

Затем вы фильтруете столбец p.value:

tab %>% filter(p.value < 0.05)
# A tibble: 1 x 5
  term        estimate std.error statistic  p.value
  <chr>          <dbl>     <dbl>     <dbl>    <dbl>
1 (Intercept)     34.2      2.59      13.2 1.54e-13

Так что теперь вы можете взятьимя регрессора:

tab %>% filter(p.value < 0.05) %>% select(term) %>% as.character()
[1] "(Intercept)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...