vlambda博客
学习文章列表

案例:回归分析-R实现

作者 | 结实
来源 | DATA江湖

1)业务需求:

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

2)分析:

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

3)建立模型:

案例:回归分析-R实现

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)案例:回归分析-R实现

模型为,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)

案例:回归分析-R实现

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

##更新模型 

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

summary(lm.new)

案例:回归分析-R实现

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

##去掉X2的一次项

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

summary(lm2.new)

案例:回归分析-R实现
 虽然通过了F检验与T检验,但模型残差的标准差上升,R2下降。进一步修正,考虑X1X2的交互作用

##再次更新模型

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

summary(lm2.new)


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

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

——————————————

往期精彩: