我正在使用配方进行线性回归,以根据职等(副教授,助理教授和正教授),性别,学科(应用或理论的),服务年限和博士学位以来的年限预测薪水。该数据集在汽车包装中。
我创建了虚拟变量,并将因果变量转换为更正常的形状。我已经将服务年限和自博士学位以来的年限标准化为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
显示薪水是结果,而不是预测因素。当我查看线性模型的摘要信息时,工资为什么会显示为系数?
答案 0 :(得分:0)
在这种情况下,sal.recipe不是模型对象(就像我想的那样),而只是一个数据框。配方用于将转换应用于数据,并且不会自动构造公式。在这种情况下,将sal.recipe传递给lm只是传递一个数据帧,这就是造成混乱的原因。