美文网首页
R for data science chap18——模型构建.

R for data science chap18——模型构建.

作者: 陆慕熙 | 来源:发表于2020-06-20 11:09 被阅读0次

    18.2.1 价格与重量

    发现质量差的钻石价格更高可能是受混淆变量——carat(钻石重量)的影响

    ggplot(diamonds,aes(carat,price))+
      geom_hex(bins=50)
    

    geom_hex()运行必须要有hexbin包。并不报错,只是出不来图,需要自行安装。


    image.png

    调整数据集再分析

    调整数据集:
    1、筛选数据集,选取多而集中的部分,这里选取carat <2.5 的97%数据
    2、 对连续性变量对数转化——可以使模型变为线性

    diamonds2 <- diamonds %>%
      filter(carat<= 2.5) %>%
      mutate(lprice=log2(price),lcarat= log2(carat))
    
    ggplot(diamonds2,aes(lcarat,lprice))+
      geom_hex(bins=50)
    
    image.png

    。。。为啥我有个虚线????

    拟合模型

    mod_diamond <- lm(lprice~lcarat,data = diamonds2)
    

    可视化检查模型:将预测值覆盖在原始数据上

    • 常规的操作是将预测值添加到网格中可视化,这里模型中所用的是对数转换的变量。因此代入预测值时需要反向变换还原对数转换
    grid <-  diamonds2 %>%
      data_grid(carat=seq_range(carat,20)) %>%
      mutate(lcarat = log2(carat)) %>%
      add_predictions(mod_diamond,"lprice") %>%
      mutate(price = 2 ^ lprice)
    
    > ggplot(diamonds2,aes(carat,price))+
    +   geom_hex(bins=50)+
    +   geom_line(data = grid,color="red",size=1)
    
    image.png

    检验残差

    > diamonds2 <- diamonds2 %>%
    +   add_residuals(mod_diamond,"lresid")
      
    > ggplot(diamonds2,aes(lcarat,lresid))+
    +   geom_hex(bins=50)
    
    > ggplot(diamonds2,aes(cut,lresid)) + geom_boxplot()
    > ggplot(diamonds2,aes(color,lresid)) + geom_boxplot()
    > ggplot(diamonds2,aes(clarity,lresid)) + geom_boxplot()
    
    image.png image.png image.png image.png

    18.2.2 一个更复杂的模型

    • 建立多因素线性模型
    mod_diamond2 <-  lm(lprice ~ lcarat + color + cut + clarity, data = diamonds2)
    
    • 可视化——这里有4个因素,可以分别可视化
    > ggplot(grid,aes(cut,pred))+
    +   geom_point()
    > grid <-  diamonds2 %>%
    +   data_grid(cut, .model = mod_diamond2) %>%
    +   add_predictions(mod_diamond2)
    > grid
    > ggplot(grid,aes(cut,pred))+
    +   geom_point()
    
    image.png
    • 分析残差
    > diamonds2 <- diamonds2 %>%
    +   add_residuals(mod_diamond2,"lresid2")
    > 
    > ggplot(diamonds2,aes(lcarat,lresid2))+
    +   geom_hex(bins=50)
    
    image.png

    下面可以检验正常值(resid>2 意味着钻石的加个是预计价格的四倍以上)

    (这里typical()得到的结果似乎有问题,导致color计算出的diamonds2与r4ds不一致,解决后再来更新)

    相关文章

      网友评论

          本文标题:R for data science chap18——模型构建.

          本文链接:https://www.haomeiwen.com/subject/jitvxktx.html