1118 chapter17 &18

字数 483阅读 35

使用 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")
  1. gather_predictions() and spread_predictions()允许同时为多个模型添加predictions
  2. 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")
)
}
  • 使用领域知识可以改进模型

推荐阅读更多精彩内容