R语言学习笔记:广义线性模型

model4 = lm(sales~TV + I(TV^2), data = data)

summary (model4)

将tv作为二次项放入回归模型中,I for isolated,结果如下:


新增二次项P>0.05,统计意义上显著性不强,二次项不明确;调整后R方变化,新增加变量t统计量大于1时调整后R方会增加

*注意区分经济学意义上的显著性和统计学意义上的显著性

将二次函数(抛物线)绘制于散点图上无法用abline(只能画直线),使用lines函数,以点代线

plot (data$TV, data$sales)#绘制散点图

cc = data

cc[, 2] = seq (0, 300, length.out=200)#将TV一行替换为直线的多个点的x坐标轴,seq函数的意思是生成一组数字,从from开始,到to结束,每两个数间的间隔是length。length.out的作用是以数字数量自动定义步长

dd = predict (model4,cc)#预测出200个点的y坐标

lines (cc[,2], dd, col = 'red')#拼凑出一条抛物线

在之前的model3当中,我们看到model3的并不满足线性假设和同方差假设:


通过如下代码引入二次项TV建立model5并进行验证:

model5 = lm(sales~TV + radio + I(TV^2), data = data)

plot (model5, 1)

得到:


可以看到点密集程度提高,但是线性假设仍然存在问题,考虑添加特殊的二次项:交乘项,捕捉自变量之间的互补或者替代效应:

model6 = lm(sales~TV + radio + I(TV^2) + I(TV * radio), data = data)

plot (model6, 1)

得到如下散点图:


线性假设拟合明显提升


同时分析报告结果显示,每一个变量的显著性十分明显,意味着每一个变量的添加都是有意义的

上述步骤是回归诊断,通过

1. ggpaits()函数生成对比图找出主要相关变量和无关变量

2. 建立多远线性模型,然后通过Anova函数筛选出有解释力显著性高的自变量

3. 观察残差分布图与Q-Q图,增加高次项

如果三大假设出现问题,第一步解决异方差性问题,常用方法:变换因变量,比如对因变量求对数

如:

data = data %>% mutate (lnsales = log(sales))

model7 = lm (lnsales ~ TV + radio + I(TV^2)+I(TV*radio), data = data)


明显有了较大改善

第二步,解决线性问题

常用方法:对自变量进行变换,比如正u型可以增加二次项

第三步,解决正态性问题

如果之前没有的话,一般对自变量和因变量进行对数变换,真实世界往往是正态+头部效益

对广义线性模型的解释:

1. 加入平方项:y = k1x+k2x^2 + b

x每增加1,y增加k1+2k2x,增速在加快/放缓

2. 加入交乘项:y = k1x1 + k2x2 + k3x1*x2+b

k1和k2同为正:

如果k3是显著为正的,x1和x2有互补作用

如果k3是显著为负的,x1和x2有替代作用

3. 对数变换:

ln(y) = kx+b,x增加1, y增加100k%

y = k*ln(x)+b,x增加1%,y增加0.01k

ln(y) = k*ln(x)+b,x增加1%,y增加k%。经济学中“弹性”的概念

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容