BOX-COX变换(R语言)

1.消除异方差

代码实现如下:

data3.2<-read.csv("C:/Users/Administrator/Desktop/data3.2.csv",head=TRUE)
library(MASS)
bc3.2<-boxcox(y~x1+x2,data=data3.2,lambda=seq(-2,2,0.01))
# λ的取值为区间[-2,2]上步长为0.01的值,bc3.2中保存了λ的值及其对应的对数似然函数值
lambda<-bc3.2$x[which.max(bc3.2$y)]  # 将使对数似然函数值达到最大的λ复制给lambda
lambda
y_bc<-(data3.2$y^lambda-1)/lambda  # 计算变换后的y值
lm3.2_bc<-lm(y_bc~x1+x2,data=data3.2)  # 使用变换后的y值建立回归方程
summary(lm3.2_bc)
abse<-abs(resid(lm3.2_bc))  # 计算残差的绝对值
cor.test(data3.2$x1,abse,method="spearman")  # 计算残差与x1的相关系数
cor.test(data3.2$x2,abse,method="spearman")  # 计算残差与x2的相关系数

输出结果如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  根据输出结果,使似然函数取值最大的 λ = 0.47 \lambda=0.47 λ=0.47。另外,残差绝对值与 x 1 , x 2 x_{1},x_{2} x1,x2的等级相关系数 t t t检验的 P P P值为0.07587,0.4266,在显著性水平为0.05时不显著,故可认为异方差被消除。

2.消除自相关

data2.2<-read.csv("C:/Users/Administrator/Desktop/data2.2.csv",head=TRUE)
bc2.2<-boxcox(y~x,data=data2.2,lambda=seq(-2,2,0.01))
lambda<-bc2.2$x[which.max(bc2.2$y)]
y_bc<-(data2.2$y^lambda-1)/lambda
lm2.2_bc<-lm(y_bc~x,data=data2.2)
summary(lm2.2_bc)
lambda

输出结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  根据上面的输出结果可以知道,使似然函数取值最大的 λ = 1.21 \lambda=1.21 λ=1.21
  进行DW检验可以得到:
  在这里插入图片描述
   D W = 1.4424 , P = 0.1035 DW=1.4424,P=0.1035 DW=1.4424,P=0.1035,由此可知,在显著性水平为0.05时,新的残差序列不存在自相关,这表明BOX-COX方法成功地消除了序列自相关。

  • 15
    点赞
  • 127
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值