Почему переменная результата отображается как коэффициент в сводной таблице линейной регрессии? - PullRequest
0 голосов
/ 18 мая 2019

Я выполняю линейную регрессию, используя рецепты, чтобы предсказать зарплату на основе ранга (доцент, доцент и полный профессор), пола, дисциплины (прикладной или теоретический), лет службы и лет со дня доктора философии. Этот набор данных находится в пакете автомобилей.

Я создал фиктивные переменные и преобразовал зависимую переменную результата в более нормальную форму. Я стандартизировал годы службы и годы с момента получения ученой степени доктора наук до значений от 0 до 1.

salary.split <- initial_split(salary.df)

sal.train <- training(salary.split)
sal.test <- testing(salary.split)

sal.recipe <- recipe(salary ~ ., data = salary.df) %>% 
  step_log(salary) %>% 
  step_dummy(all_nominal()) %>% 
  step_range(yrs.since.phd) %>% 
  step_range(yrs.service)


sal.rec <- prep(sal.recipe, training = sal.train) %>% bake(new_data = sal.train)

sal.lm <- lm(sal.rec)

summary(sal.lm)

Результаты резюме:

Call:
lm(formula = sal.rec)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.17727 -0.05780 -0.01406  0.04221  0.34499 

Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
(Intercept)   -0.3052564  0.3240025  -0.942  0.34690    
yrs.service    0.8054404  0.0292577  27.529  < 2e-16 ***
salary         0.0375859  0.0285323   1.317  0.18877    
rank_AsstProf -0.0528260  0.0184926  -2.857  0.00459 ** 
rank_Prof      0.0740925  0.0174977   4.234 3.08e-05 ***
discipline_B  -0.0438070  0.0107863  -4.061 6.28e-05 ***
sex_Male       0.0006626  0.0165779   0.040  0.96815    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.08639 on 291 degrees of freedom
Multiple R-squared:  0.8656,    Adjusted R-squared:  0.8628 
F-statistic: 312.2 on 6 and 291 DF,  p-value: < 2.2e-16

Когда я смотрю на переменную информацию (sal.recipe$var_info):

# A tibble: 6 x 4
  variable      type    role      source  
  <chr>         <chr>   <chr>     <chr>   
1 rank          nominal predictor original
2 discipline    nominal predictor original
3 yrs.since.phd numeric predictor original
4 yrs.service   numeric predictor original
5 sex           nominal predictor original
6 salary        numeric outcome   original

, который показывает зарплату как результат, а не предиктор. Почему зарплата отображается как коэффициент, когда я просматриваю сводную информацию по линейной модели?

1 Ответ

0 голосов
/ 18 мая 2019

В этом случае sal.recipe - это не модельный объект (как я думал), а просто фрейм данных.Рецепты используются для применения преобразований к данным, а не для автоматического построения формулы.В этом случае передача sal.recipe в lm - это просто передача кадра данных, что и вызывает путаницу.

...