R box-cox变换 《回归分析与线性统计模型》page100
> 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的更多相关文章
- R语言 方差稳定化变换与线性变换 《回归分析与线性统计模型》page96
> rm(list = ls()) > A=read.csv("data96.csv") > A Y N 1 11 0.0950 2 7 0.1920 3 7 0 ...
- R WLS矫正方差非齐《回归分析与线性统计模型》page115
rm(list = ls()) A = read.csv("data115.csv") fm = lm(y~x1+x2,data = A) coef(fm) A.cooks = c ...
- R语言 线性回归分析实例 《回归分析与线性统计模型》page72
y,X1,X2,X3 分别表示第 t 年各项税收收入(亿元),某国生产总值GDP(亿元),财政支出(亿元)和商品零售价格指数(%). (1) 建立线性模型: ① 自己编写函数: > librar ...
- R 《回归分析与线性统计模型》page119,4.2
rm(list = ls()) library(openxlsx) library(MASS) data = read.xlsx("xiti_4.xlsx",sheet = 2) ...
- R 《回归分析与线性统计模型》page93.6
rm(list = ls()) #数据处理 library(openxlsx) library(car) library(lmtest) data = read.xlsx("xiti4.xl ...
- R 对数变换 《回归分析与线性统计模型》page103
BG:在box-cox变换中,当λ = 0时即为对数变换. 当所分析变量的标准差相对于均值而言比较大时,这种变换特别有用.对数据作对数变换常常起到降低数据波动性和减少不对称性的作用..这一变换也能有效 ...
- R 《回归分析与线性统计模型》page164 单变量、多变量多项式模型
--多项式回归模型 --单变量多项式模型 --多变量多项式模型 rm(list = ls()) library(openxlsx) library(leaps) #单变量多项式模型# data = r ...
- R 《回归分析与线性统计模型》page141,5.2
rm(list = ls()) library(car) library(MASS) library(openxlsx) A = read.xlsx("data141.xlsx") ...
- R 《回归分析与线性统计模型》page140,5.1
rm(list = ls()) library(car) library(MASS) library(openxlsx) A = read.xlsx("data140.xlsx") ...
随机推荐
- Ubuntu开启端口(持久化)
1.查看已经开启的端口 sudo ufw status 2.打开80端口 sudo ufw allow 3.防火墙开启 sudo ufw enable 4.防火墙重启 sudo ufw reload
- 七 Spring的IOC的注解方式
Spring的IOC的注解方式入门 引入注解约束,配置组件扫描 类上的注解: @Conponent @Controller @Service @Repository 普通属性的注解 @value ...
- JS闭包(3)
在将内部函数作为函数的返回值的时候,由于闭包的存在会携带上内部函数所使用的外部函数的变量,如果这些变量很多或者很大,那么在使用完返回的内部函数后最好将其置为null以便释放闭包中的携带变量,一面造成内 ...
- git 删除分支和回退到以前某个提交版本
1.git 创建和删除分支: 创建:git branch 分支名字 本地删除:git branch -D 分支名字 远程删除:git push origin :分支名字 2.git 回退到以前提交的版 ...
- List转为字符串
2019-12-12 20:34:16 方法1: 转换后的格式为:"('111','112','1113')" List list = new ArrayList<>( ...
- 【PAT甲级】1026 Table Tennis (30 分)(结构体排序,trick较多)
题意: 输入一个正整数N(<=10000),表示客户(对)的大小,接着输入N行数据,每行包括一对顾客到场的时间,想要玩的时间,以及是否是VIP客户.接下来输入两个正整数K,M(K<=100 ...
- task20160125
http://task.zbj.com/2034844/n15o1.html 百度开放平台--首页>帮助文档首页>Frontia>Android开发指南>个人数据存储 http ...
- Linux centosVMware NFS介绍、NFS服务端安装配置、NFS配置选项
一.NFS介绍 NFS是Network File System的缩写 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版 ...
- Linux centosVMware LAMP php-fpm的pool、php-fpm慢执行日志、open_basedir、php-fpm进程管理
一.php-fpm的pool vim /usr/local/php/etc/php-fpm.conf//在[global]部分增加 include = etc/php-fpm.d/*.conf mkd ...
- MySQL 之存储引擎与数据类型与数据约束
一.存储引擎场景 1.InnoDB 用于事务处理应用程序,支持外键和行级锁.如果应用对事物的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包括很多更新和删除操作,那 ...