> rm(list = ls())
> library(openxlsx)
> electric= read.xlsx("data101.xlsx",sheet = 1) #打开文件
> electric
No x y
1 1 679 0.79
2 2 292 0.44
3 3 1012 0.56
4 4 493 0.79
5 5 582 2.70
6 6 1156 3.64
7 7 997 4.73
8 8 2189 9.50
9 9 1097 5.34
10 10 2078 6.85
11 11 1818 5.84
12 12 1700 5.21
13 13 747 3.25
14 14 2030 4.43
15 15 1643 3.16
16 16 414 0.50
17 17 354 0.17
18 18 1276 1.88
19 19 745 0.77
20 20 435 1.39
21 21 540 0.56
22 22 874 1.56
23 23 1543 5.28
24 24 1029 0.64
25 25 710 4.00
26 26 1434 0.31
27 27 837 4.20
28 28 1748 4.88
29 29 1381 3.48
30 30 1428 7.58
31 31 1255 2.63
32 32 1777 4.99
33 33 370 0.59
34 34 2316 8.19
35 35 1130 4.79
36 36 463 0.51
37 37 770 1.74
38 38 724 4.10
39 39 808 3.94
40 40 790 0.96
41 41 783 3.29
42 42 406 0.44
43 43 1242 3.24
44 44 658 2.14
45 45 1746 5.71
46 46 468 0.64
47 47 1114 1.90
48 48 413 0.51
49 49 1787 8.33
50 50 3560 14.94
51 51 1495 5.11
52 52 2221 3.85
53 53 1526 3.93

  

求λ的第一种方法,用包

library(MASS) #MASS包有box-cox变换
op<-par(mfrow=c(2,2),mar=0.4+c(4,4,1,1),oma=c(0,0,2,0)) #将四张图放在一起,调整边界。(以后也采用此行)
#绘制拟合值与残差的散点图(图1)
plot(fitted(lm4.sol),resid(lm4.sol),cex=1.2,pch=21,col="red",bg="orange",xlab="Fitted value",ylab="Residuals")
#box-cox变换
a1=boxcox(lm4.sol,lambda=seq(0,1,by=0.1)) #进行box-cox变换(图2)

  

  根据box-cox指令画出来的图,λ=0.5包含在区间中,于是令λ=0.5

#### lambda=0.5 ####
lambda=0.5
Ylam<-(y^lambda-1)/lambda #对回归响应变量Y作变换
lm.lam<-lm(Ylam~x) #对变换后的响应变量与回归变量作回归
summary(lm.lam)
#绘制拟合值与残差的散点图
plot(fitted(lm.lam),resid(lm.lam),cex=1.2,pch=21,col="red",bg="orange",xlab="Fitted value",ylab="Residuals") beta0=lm.lam$coeff[1]
beta1=lm.lam$coeff[2]
#绘制变换后函数曲线
curve( (1+lambda*(beta0+beta1*x))^(1/lambda),from=min(x),to=max(x),col="blue",lwd=2,xlab="能耗",ylab="用电需求量")
points(x,y,pch=21,cex=1.2,col="red", bg="orange")
mtext("Box-Cox Transformations",outer=T,cex=1.5) #四幅图的总标题

  

求λ的第二种方法

(1)对给定的λ,计算z(λ)

(2)求残差平方和

(3)对一系列的λ值,重复上述步骤,得到响应的残差平方和。以λ为横轴,残差平方和为纵轴,做出响应的曲线,值观看出使得残差平方和最小的λ

(4)求β*

lamb=c(-2,-1,-0.5,0,0.125,0.25,0.375,0.5,0.625,0.75,1,2)
### lamb=seq(-1,1,length=100)
n=length(x) #数据x的长度
k=length(lamb) #数据λ的长度
z=numeric(n) #构造一个长度为n的数字向量
SS=numeric(k) #构造一个长度为k的数字向量
X=matrix(c(rep(1,n),x),nr=n,nc=2) #设计矩阵
N=diag(n)-X%*%solve(crossprod(X))%*%t(X) #I-H #求y的变换后的值
for(i in 1:k){
if(lamb[i]==0){
z= log(y)*(prod(y)^(1/n))
} else{
z=(y^lamb[i])/((prod(y))^((lamb[i]-1)/n))
}
SS[i]=z %*% N %*% z
}
SS ###SS[5]=1.84684 lamb=0.125
plot(lamb,SS,type='l')

  

R box-cox变换 《回归分析与线性统计模型》page100的更多相关文章

  1. R语言 方差稳定化变换与线性变换 《回归分析与线性统计模型》page96

    > rm(list = ls()) > A=read.csv("data96.csv") > A Y N 1 11 0.0950 2 7 0.1920 3 7 0 ...

  2. R WLS矫正方差非齐《回归分析与线性统计模型》page115

    rm(list = ls()) A = read.csv("data115.csv") fm = lm(y~x1+x2,data = A) coef(fm) A.cooks = c ...

  3. R语言 线性回归分析实例 《回归分析与线性统计模型》page72

    y,X1,X2,X3 分别表示第 t 年各项税收收入(亿元),某国生产总值GDP(亿元),财政支出(亿元)和商品零售价格指数(%). (1) 建立线性模型: ① 自己编写函数: > librar ...

  4. R 《回归分析与线性统计模型》page119,4.2

    rm(list = ls()) library(openxlsx) library(MASS) data = read.xlsx("xiti_4.xlsx",sheet = 2) ...

  5. R 《回归分析与线性统计模型》page93.6

    rm(list = ls()) #数据处理 library(openxlsx) library(car) library(lmtest) data = read.xlsx("xiti4.xl ...

  6. R 对数变换 《回归分析与线性统计模型》page103

    BG:在box-cox变换中,当λ = 0时即为对数变换. 当所分析变量的标准差相对于均值而言比较大时,这种变换特别有用.对数据作对数变换常常起到降低数据波动性和减少不对称性的作用..这一变换也能有效 ...

  7. R 《回归分析与线性统计模型》page164 单变量、多变量多项式模型

    --多项式回归模型 --单变量多项式模型 --多变量多项式模型 rm(list = ls()) library(openxlsx) library(leaps) #单变量多项式模型# data = r ...

  8. R 《回归分析与线性统计模型》page141,5.2

    rm(list = ls()) library(car) library(MASS) library(openxlsx) A = read.xlsx("data141.xlsx") ...

  9. R 《回归分析与线性统计模型》page140,5.1

    rm(list = ls()) library(car) library(MASS) library(openxlsx) A = read.xlsx("data140.xlsx") ...

随机推荐

  1. Python开发:变量类型

    1.变量赋值 #!/usr/bin/python # -*- coding: UTF-8 -*- counter = 100 # 赋值整型变量 miles = 1000.0 # 浮点型 name = ...

  2. FreeSWITCH 加载模块过程解读

    今天来学习FreeSWITCH 加载模块过程. 哪些模块需要编译,是由源码下的 modules.conf 文件决定的. 哪些模块在程序启动时自动加载,是由 freeswitch/conf/autolo ...

  3. centos将uwsgi添加为系统服务

    如果退出ssh 链接, 都会导致uwsgi进程关闭 这时, 我们需要进行管理软件管理uwsgi进行的运行, centos系统中我们采用 systemd, 让我们的项目变为系统服务 第一步: 首先 vi ...

  4. 基于Modelsim的视频流仿真

    一.前言 最近在看牟新刚写的<基于FPGA的数字图像处理原理及应用>,书中关于FPGA数字图像处理的原理的原理写的非常透彻,在网上寻找了很久都没有找到完整的源代码工程,因此尝试自己做了补充 ...

  5. windows通过zip安装mysql5.7.26的一个坑

    需要将my.ini的 红框的/不能写成\ 注意编码格式问题 然后 mysqld --initialize-insecure mysqld --install net start mysql

  6. Maven项目-端口被占用java.net.BindException: Address already in use: JVM_Bind <null>:8080解决方法

    异常显示: 问题所在:之前启动的tomcat未停止,端口被占用. 解决方法: 养成良好的习惯,用完之后停掉服务.

  7. PL-USB2-BLASTER 使用说明

    PL-USB2-BLASTER 使用说明 PL-USB2-BLASTER就是USB BLATER II烧录器.官方文档在https://www.intel.com/content/dam/www/pr ...

  8. 复习jquery菜鸟教程

    https://www.runoob.com/jquery/jquery-plugin-treeview.html

  9. 网络协议-dubbo协议

    Dubbo支持dubbo.rmi.hessian.http.webservice.thrift.redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的. 下面我们就针对Dubbo的每种 ...

  10. C#委托-事件示例

    Program.cs using System;using System.Collections.Generic;using System.Linq;using System.Text;using S ...