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‘)

  

原文地址:https://www.cnblogs.com/jiaxinwei/p/11719069.html

时间: 2024-11-03 23:26:16

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

R 《回归分析与线性统计模型》page120,4.3

#P120习题4.3 rm(list = ls()) A = read.xlsx("xiti_4.xlsx",sheet = 3) names(A) = c("ord","Y","K","L") attach(A) fm = lm(Y~log(K)+log(L))#线性回归模型 ei = resid(fm) X = cbind(1,as.matrix(A[,3:4])) t = ti(ei,X) #外部学生

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

rm(list = ls()) library(car) library(MASS) library(openxlsx) A = read.xlsx("data140.xlsx") head(A) attach(A) fm = lm(y~x1+x2+x3 , data=A) #建立模型 vif(fm) #查看模型是否存在共线性 > vif(fm) #查看模型是否存在共线性 x1 x2 x3 21.631451 21.894402 1.334751 结果显示存在共线性 summar

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

rm(list = ls()) library(car) library(MASS) library(openxlsx) A = read.xlsx("data141.xlsx") head(A) fm = lm(y~x1+x2+x3+x4 , data=A ) #判断多重共线性 vif(fm) > vif(fm) x1 x2 x3 x4 38.49621 254.42317 46.86839 282.51286 #具有多重共线性 #进行主成分回归 A.pr = princomp

R语言之Logic回归分析

理论上,回归分析是在目标变量为连续型数据的情况下建模的,它不能处理目标变量为分类型数据的情况. 而logic回归分析的思路是把分类变量(“是否开通VIP”)转化为连续变量(“开通VIP的概率”),进而使用回归分析的方法间接地研究分类分析的问题. 一.原理 假设vip变量为分类变量,其取值只有0和1,这是分类型变量,无法通过回归分析建模. 但是,vip取值为1的概率却是一个连续型变量(prob.vip),可以使用回归分析为prob.vip建模: prob.vip=k1*x1+k2*x2+k3*x3

RBF神经网络——直接看公式,本质上就是非线性变换后的线性变化(RBF神经网络的思想是将低维空间非线性不可分问题转换成高维空间线性可分问题)

Deeplearning Algorithms tutorial 谷歌的人工智能位于全球前列,在图像识别.语音识别.无人驾驶等技术上都已经落地.而百度实质意义上扛起了国内的人工智能的大旗,覆盖无人驾驶.智能助手.图像识别等许多层面.苹果业已开始全面拥抱机器学习,新产品进军家庭智能音箱并打造工作站级别Mac.另外,腾讯的深度学习平台Mariana已支持了微信语音识别的语音输入法.语音开放平台.长按语音消息转文本等产品,在微信图像识别中开始应用.全球前十大科技公司全部发力人工智能理论研究和应用的实现

R语言之Logistic回归分析

一.probit回归模型在R中,可以使用glm函数(广义线性模型)实现,只需将选项binomial选项设为probit即可,并使用summary函数得到glm结果的细节,但是和lm不同,summary对于广义线性模型并不能给出决定系数,需要使用pscl包中的pR2函数得到伪决定系数,然后再使用summary得到细节> library(RSADBE)> data(sat)> pass_probit <- glm(Pass~Sat,data=sat,binomial(probit))&

ArcGIS教程:检查数据的分布

虽然预测图在数据不服从正态分布的情况下可能不是最佳的,但 ArcGIS Geostatistical Analyst 提供的大多数插值方法都不要求数据服从正态分布.即,更改数据形状(分布)的数据变换不要求是插值模型的一部分.不过,有些克里金方法要求数据近似服从正态分布(接近钟形曲线).特别地,利用普通克里金法.简单克里金法或泛克里金法创建的分位数图和概率图都假定数据服从多元正态分布.而且,用作地统计模拟的基础的简单克里金模型应使用服从正态分布的数据或者将常态得分变换作为模型的一部分以确保数据服从

R语言-回归分析笔记

使用若干自变量并建立公式,以预测目标变量 目标变量是连续型的,则称其为回归分析 (1)一元线性回归分析 y=kx+b sol.lm<-lm(y~x,data) abline(sol.lm) 使模型误差的平方和最小,求参数k和b,称为最小二乘法 k=cov(x,y)/cov(x,x) b=mean(y)-k*mean(x) 估计参数b,k的取值范围 p元模型 p是自变量数,n是样本数 [ki-sd(ki)ta/2(n-p-1),ki+sd(ki)ta/2(n-p-1)] k0表示回归模型的b;  

R语言实战(四)回归

本文对应<R语言实战>第8章:回归 回归是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来挑选与相应变量相关的解释变量,可以描述两者的关系,也可以生成一个等式,通过解释变量来预测响应变量. 回归分析的各种变体 回归类型 用途 简单线性 用一个量化的解释变量预测一个量化的响应变量 多项式 用一个量化的解释变量预测一个量化的响应变量,模型的关系是n阶多项式 多元线性 用两个或多个量化的解释变量预测一个