> 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. Java连载66-数组的两种初始化方式

    一.数组 1.数组中存储元素的类型是统一的,每一个元素在内存中所占用的空间大小是相同的,知道数组的首元素的内存地址,要查找的元素只要知道下标,就可以快速的计算出偏移量,通过首元素内存地址加上偏移量,就 ...

  2. git 修改分支 删除分支 新增分支

    一.修改分支名 1.本地分支重命名 git branch -m oldName newName 2.将重命名后的分支推送到远程 git push origin newName 3.重新更新所有分支 g ...

  3. Spring学习(四)

    Spring Ioc容器 1.具有依赖注入功能的容器.负责实例化,定位,配置应用程序中的对象及建立这些对象间的依赖.在Spring中BeanFactory是Ioc容器的实际代表者.BeanFactor ...

  4. 【转】CentOS6开启BBR加速

    1.查看机器内核 BBR 算法需要 Linux 4.9 及以上的内核支持,所以想要使用该方式的需要先升级内核版本. 在 Cent OS 7 上的 Linux 内核是 3.10, 使用 uname -r ...

  5. SpringMVC——SSM整合

    1.环境要求: IDEA MySQL 5.1.19 Tomcat 9 Maven 3.6.1 2.数据库环境搭建 创建一个存放书籍的数据库表 CREATE DATABASE `ssmbuild`; U ...

  6. RGB 和 YUV 的转换公式

  7. NIKKEI Programming Contest 2019-2 D 部分分题解

    请注意本文章所描写的算法只可以获得前 14 个测试点(含三个样例)的部分分,但是没有出现 WA 的情况. 题面 给出 \(m\) 个线段,每次可以从线段上任意一点以代价 \(c_i\) 走到线段上另一 ...

  8. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表单:水平表单

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. UniCode 速查表

    unicode速查表 0000–0FFF 1000–1FFF 2000–2FFF 3000–3FFF 4000–4FFF 5000–5FFF 6000–6FFF 7000–7FFF 8000–8FFF ...

  10. 每日算法 - day 15

    每日算法 those times when you get up early and you work hard; those times when you stay up late and you ...