5.模型

1.使用modelr实现基础模型

library(tidyverse)
library(modelr)
ggplot(data=sim1,mapping=aes(x,y))+geom_point()
#根据图形推测y与x应该为线性关系
sim1_mod<-lm(y~x,data=sim1)
coef(sim1_mod)
y~x.png

2.模型可视化

#预测
#找出唯一的x
grid<-sim1%>%data_grid(x)
#添加预测值
grid<-grid%>%add_predictions(sim1_mod)
ggplot(sim1,aes(x,y))+geom_point()+geom_line(aes(y=pred),data=grid,color='red',size=1)
Rplot.png

将残差添加到原始数据集

sim1<-sim1%>%add_residuals(sim1_mod)
#绘制频率多边形图观察残差分布
ggplot(data=sim1,mapping=aes(x=resid))+geom_freqpoly(binwidth=0.5)
Rplot01.png
#观察残差与解释变量x的关系
ggplot(data=sim1,mapping=aes(x=x,y=resid))+geom_point()+geom_ref_line(h=0)
Rplot02.png

3.公式和模型
(1)分类变量

mod2<-lm(y~x,data=sim2)
summary(mod2)
#加入拟合模型预测的数值,并图形化表示
grid<-sim2%>%data_grid(x)%>%add_predictions(mod2)
ggplot(sim2,aes(x))+geom_point(aes(y=y))+geom_point(data=grid,aes(y=pred),color='red',size=4)
分类变量.png

(2)交互项(连续变量与分类变量)

mod1<-lm(y~x1+x2,data=sim3)
#y=a0+a1x1+a2x2+a3x1x2
mod2<-lm(y~x1*x2,data=sim3)
#比较mod1和mod2的预测效果
grid<-sim3%>%data_grid(x1,x2)%>%gather_predictions(mod1,mod2)
grid<-sim3%>%data_grid(x1,x2)%>%gather_predictions(mod1,mod2)
ggplot(data=sim3,aes(x1,y,color=x2))+geom_point()+geom_line(data=grid,aes(y=pred))+facet_wrap(~model)
y~x1.png
#比较模型残差
sim3<-sim3%>%gather_residuals(mod1,mod2)
ggplot(sim3,aes(x1,resid,color=x2))+geom_point()+facet_wrap(model~x2)
resid.png

4.diamonds数据集

#钻石价格与重量之间的关系
diamonds2<-diamonds%>%filter(carat<=2.5)%>%mutate(lprice=log2(price),lcarat=log2(carat))
ggplot(diamonds2,aes(lcarat,lprice))+geom_hex(bins=50)
Rplot.png

从图中可以看出关系约为线性

mod_diamond<-lm(lprice~lcarat,data=diamonds2)
summary(mod_diamond)
#更复杂的模型
mod_diamond2<-lm(lprice~lcarat+color+cut+clarity,data=diamonds2)
summary(mod_diamond2)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容