使用 modelr 包对R包中的建模函数进行包装,使其可以支持管道操作
- 找出最佳模型“牛顿-拉夫逊搜索” → optim()
- 拟合线性的工作 lm()
sim1_mod <- lm(y~x, data = sim1)
ggplot(sim1a, aes(x = x, y = y)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE)
模型可视化
- 使用 modelr::data_grid()生成分布均匀的数值网络
- 使用modelr::add_predictions()添加预测值
- 使用geom_abline()绘制预测值
- add_residuals()将残差添加到数据中。【残差:平均值总为0,应该为随机的噪声】
p253练习题
sim1_loess <- loess(y ~ x, data = sim1)
grid_loess <- sim1 %>%
add_predictions(sim1_loess)
ggplot(sim1, aes(x = x, y = y)) +
geom_point() +
geom_line(aes(x = x, y = pred), data = grid_loess, colour = "red")
- gather_predictions() and spread_predictions()允许同时为多个模型添加predictions
- geom_ref_line() 添加一个参考线到图中
公式和模型族
model_martix()
向模型中加入截距项:默认加入一个值全是1的项;不想要,使用-1丢弃
分类变量
交互项(连续变量和分类变量)
两种模型:+ 或者 *
- 模型中,每条线具有相同斜率,不同截距
- 模型中,斜率、截距都不同
检查残差看哪个更好
交互项(两个连续变量)
- seq_range()的三个参数
- pretty = TRUE,生成“漂亮的”序列
- trim = 0.1,截断10%的尾部值
- expand = 0.1,某种程度上是trim()的反函数,可以将取值范围扩大10%
变量转换
可以用来近似表示非线性函数
缺失值
默认情况下,R会丢失缺失值,options(na.action = na.warn),确保我们收到警告信息
chapter18
模型:模式 + 残差
构建模型为了明确表示观察到的效果
- 若模型需要未明确提供的变量,data-grid()会自动使用“典型”值来填充,连续变量,模型使用中位数;分类变量,模型使用最常见的值
将日期分为多个学期
term <- function(date){
cut(date,
breaks = ymd(20130101, 20130605, 20130825, 20140101),
labels = c("spring", "summer", "fall")
)
}
- 使用领域知识可以改进模型