楼主: hubifeng?
45895 5

[程序分享] 异方差检验及解决方法 [推广有奖]

副教授

68%

还不是VIP/贵宾

-

威望
0
论坛币
10467 个
通用积分
122.7839
学术水平
87 点
热心指数
86 点
信用等级
62 点
经验
496 点
帖子
662
精华
0
在线时间
1063 小时
注册时间
2010-12-7
最后登录
2022-6-21

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
states <- as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])
fit <- lm(Murder ~ Population + Illiteracy + Income + Frost, data=states)
检验方法:
方法1
残差图

方法2
ncvTest生成计分检验,原假设为误差方差不变,备择假设为误差方差随拟合值水平的变化而变化
library(car)
ncvTest(fit) #This test is often called the Breusch-Pagan test
spreadLevelPlot创建标准化残差绝对值与拟合值的散点图;若输出结果建议幂次变换(suggested power transformation)接近1,则异方差不明显,即不需要进行变换;若幂次变换为0.5,则用根号y代替y;若幂次变换为0,则用对数变换。
spreadLevelPlot(fit)

方法3
library(lmtest)
lmtest的Breusch-Pagan Test
bptest(fit,studentize=FALSE)
bptest(fit) #输出学生化(studentized)的残差结果,学生化具有修正异方差的作用

方法4
lmtest的Goldfeld-Quandt Test
gqtest(fit)


其他方法
bartlett.test
LiMcLeod{portes}可以进行多元的Portmanteau Q检验
protest{portes}可以进行一元的Portmanteau Q检验

解决方法:
方法1
NeweyWest()函数可以进行异方差和自相关稳健性Newey—West估计
library(sandwich)
NeweyWest(fit)
neweywest <- coeftest(fit, vcov = NeweyWest(fit))
print(neweywest)

hccm(fit) #car packages 协方差阵
vcovHAC(fit) #sandwich packages 协方差阵
vcov(fit)

方法2
加权最小二乘(lm模型换成gls模型)


附:
异方差的计算
## packages and data
library("AER")
data("CigarettesB")
## regression
cig_lm2 < - lm(packs ~ price + income, data = CigarettesB)
## auxiliary regression
aux <- residuals(cig_lm2)^2
aux_lm <- lm(aux ~ income * price + I(income^2) + I(price^2),
data = CigarettesB)
## test statistic
nrow(CigarettesB) * summary(aux_lm)$r.squared
pchisq( nrow(CigarettesB) * summary(aux_lm)$r.squared,df=5,lower.tail=F)




Reference:
R in Action
http://blog.csdn.net/yujunbeta/article/details/8169475

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:检验及解决 异方差检验 解决方法 方差检验 异方差 states

已有 1 人评分经验 论坛币 收起 理由
李会超 + 60 + 36 观点有启发

总评分: 经验 + 60  论坛币 + 36   查看全部评分

沙发
铁锷未残 学生认证  发表于 2014-11-12 23:38:43 |只看作者 |坛友微信交流群
谢谢分享

使用道具

藤椅
hsu22 发表于 2014-12-27 22:52:58 |只看作者 |坛友微信交流群
楼主太强了,真心谢谢了。

使用道具

板凳
微笑曙光 发表于 2015-5-4 11:44:28 |只看作者 |坛友微信交流群
谢谢楼主分享~~~

使用道具

报纸
乐悠悠123 发表于 2016-4-16 17:33:38 |只看作者 |坛友微信交流群
谢谢分享

使用道具

地板
屋檐滴语 发表于 2018-10-23 00:42:53 |只看作者 |坛友微信交流群
aux_lm <- lm(aux ~ income * price + I(income^2) + I(price^2),
data = CigarettesB)
你这里是否缺少了income和price的交叉项?

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 16:47