案例:回归分析-R实现

浏览: 2102

1)业务需求:

某牙膏制造企业为了更好的拓展产品市场,有效管理库存,董事会要求销售部门根据市场调查,找出公司生产牙膏销售量与销售价格以及广告投入等之间的关系,从而预测出在不同价格和广告费用下的销售量。

Clipboard Image.png

2)分析:

由于牙膏是生活必需品,对于大多数顾客来说,在购买时,更多地考虑不同品牌之间的价格差。所以,在研究各个因素对销量的影响时,用价格差代替公司销售价格和其他品牌平均价格更为合适。

3)建立模型:

Clipboard Image.png

Y : 牙膏销售量;X1价格差;X2公司广告费

###导入数据

toothpaste<-data.frame(
X1=c(-0.05, 0.25,0.60,0, 0.25,0.20, 0.15,0.05,-0.15,0.15,0.20, 0.10,0.40,0.45,0.35,0.30, 0.50,0.50, 0.40,-0.05,-0.05,-0.10,0.20,0.10,0.50,0.60,-0.05,0, 0.05, 0.55),
X2=c( 5.50,6.75,7.25,5.50,7.00,6.50,6.75,5.25,5.25,6.00,6.50,6.25,7.00,6.90,6.80,6.80,7.10,7.00,6.80,6.50,6.25,6.00,6.50,7.00,6.80,6.80,6.50,5.75,5.80,6.80),
Y =c( 7.38,8.51,9.52,7.50,9.33,8.28,8.75,7.87,7.10,8.00,7.89,8.15,9.10,8.86,8.90,8.87,9.26,9.00,8.75,7.95,7.65,7.27,8.00,8.50,8.75,9.21,8.27,7.67,7.93,9.26))

###建立模型

lm.sol<-lm(Y~X1+X2, data=toothpaste)
summary(lm.sol)

Clipboard Image.png

模型为,Y=4.0475+1.5883X1+0.5635X2,乍一看,系数通过了F和T检验,R方还算可以。但进一步分析。

##绘制X1与Y散点图与回归直线

attach(toothpaste)
plot(Y~X1); abline(lm(Y~X1))

##绘制X2与Y散点图与回归曲线

plot(Y~X2); 
lm2.sol<-lm(Y~X2+I(X2^2))
x<-seq(min(X2), max(X2), len=200)
y<-predict(lm2.sol, data.frame(X2=x))
lines(x,y)

Clipboard Image.png

x2与y不仅仅是线性关系。所以

##更新模型

lm.new<-update(lm.sol,.~.+I(X2^2))
summary(lm.new)

Clipboard Image.png


    模型残差的标准差有所下降,相关系数的平方R2有所上升,但又出现问题了,x2系数对应的p值大于0.05

##去掉X2的一次项

lm2.new<-update(lm.new,.~.-X2)
summary(lm2.new)

Clipboard Image.png

    虽然通过了F检验与T检验,但模型残差的标准差上升,R2下降。进一步修正,考虑X1X2的交互作用

##再次更新模型

lm2.new<-update(lm.new,.~.+X1*X2)
summary(lm2.new)

Clipboard Image.png

最终,Y=29.1133+ 11.1342X1 −7.6080X2+0.6712X22−1.4777X1*X2

总结:1,业务分析(价格差);2,建立模型;3,模型调整。






推荐 5
本文由 结实 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

13 个评论

结实老师可以把所有代码弄成插入代码的形式,会更加好看
结实

结实 回复 张聪

多谢提醒,下次以插入的形式输入。
梁勇

梁勇 回复 结实

结实老师 还可以把 1)业务需求:2)分析: 这种弄成目录形式的,我帮你调整下。
结实

结实 回复 梁勇

谢谢勇哥,下次尽量更规范些
尽量写一些离开书本的内容。
结实

结实 回复 张丹

这是我的博客
结实

结实 回复 张丹

书非出自你手,奈何自取其辱
结实老师,如果这个是从哪本书中摘来的,标注一下,会比较好一点了。
统计建模与R软件(下册)
找了好久的实例学习,难得找到这么适合初学者的入门实例,要感动到哭了
2次更新模型的时候 lm.new<-update(lm.sol,.~.+I(X2^2)) 和lm2.new<-update(lm.new,.~.+X1*X2)这里的 I(X2^2) 和 X1*X2是什么意思
x2的平方,x1乘以x2
为什么要分别用到x2的平方和x1乘以x2

要回复文章请先登录注册