为什么结果变量在线性回归汇总表中显示为系数?

时间:2019-05-18 03:27:58

标签: r regression linear-regression r-recipes tidymodels

我正在使用配方进行线性回归,以根据职等(副教授,助理教授和正教授),性别,学科(应用或理论的),服务年限和博士学位以来的年限预测薪水。该数据集在汽车包装中。

我创建了虚拟变量,并将因果变量转换为更正常的形状。我已经将服务年限和自博士学位以来的年限标准化为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 :(得分:0)

在这种情况下,sal.recipe不是模型对象(就像我想的那样),而只是一个数据框。配方用于将转换应用于数据,并且不会自动构造公式。在这种情况下,将sal.recipe传递给lm只是传递一个数据帧,这就是造成混乱的原因。