相关文章推荐
高大的蟠桃  ·  mysql ...·  9 月前    · 
深情的奔马  ·  无法在AVD管理器android ...·  1 年前    · 
机灵的手电筒  ·  reactjs - useRef ...·  1 年前    · 
为什么要进行Box-Cox转换?

Box-Cox是一种广义幂变换,统计建模中常用的变换,用于连续响应变量不满足正态时的情况。Box-Cox的一个显著的有点是通过求变参数λ来确定变换形式,而这个过程完全基于数据本身而无需任何先导信息,这比凭经验的对数,平方根变换更客观。

Box-Cox变换公式如下:

y必须取正值,y值为负,首先y+a,对不同的λ所做的变换不同。λ=0对数变换;λ=-1倒数变换;λ=0.5平方根变换。

下面本文将介绍基于R语言进行Box-Cox转换。

STEP1:加载程序包并读取数据

library(readxl)#此包可以读取电子表格数据

library(moments)#此包可进行偏度锋度计算

library(MASS)#基于此包进行box-cox转换

data<-read_excel(file.choose())#读取特定文件夹中的数据

STEP2:构建线性模型并检查残差是否满足正态分布

r1<-lm(y~x1+x2+x3+x4, data=data)#构建多元线性回归模型

hist(r1$residuals)#绘制残差频率分布图

skewness(r1$residuals)#计算偏度              结果 1.89

通过残差频率分布图和偏度值可以发现残差并不满足正态分布。

STEP3:进行Box-Cox转换,确定λ值

b <- boxcox(y ~ x1 + x2 + x3 + x4, data=data)
b
lambda <- b$x
lik <- b$y
bc <- cbind(lambda, lik)
bc[order(-lik),]#结果λ=-0.3时lik值最大,因此λ取值-0.3

STEP4:依据步骤3确定的λ值进行转换,并检查残差的正态性

r2 <- lm(1/y^(1/3) ~ x1 + x2 + x3 + x4, data=data)

hist(r2$residuals)

skewness(r2$residuals)#结果 -0.89

通过上述转换,可以看出残差分布已经近似正态了。

https://pan.baidu.com/s/123pM4Z3rXeGKI1DSOtgTPQ
提取码:fj8h
复制这段内容后打开百度网盘手机App,操作更方便哦

往期回顾:

R语言绘制流程图(一)

R语言绘制流程图(二)

R语言绘制双坐标轴的方法初探

大家都在看

2017年R语言发展报告(国内)

精心整理 | R语言中文社区历史文章合集(作者篇)

精心整理 | R语言中文社区历史文章整理(类型篇)

公众号后台回复关键字即可学习

回复 爬虫 爬虫三大案例实战
回复
Python 1小时破冰入门

回复 数据挖掘 R语言入门及数据挖掘
回复
人工智能 三个月入门人工智能
回复 数据分析师 数据分析师成长之路
回复 机器学习 机器学习的商业应用
回复 数据科学 数据科学实战
回复 常用算法 常用数据挖掘算法

R语言 Box - Cox 变换 实战( Box - Cox Transformation):将非正态分布数据转换为正态分布数据 #拟合两个回归模型(一个使用 box - cox 处理响应变量并获取最佳λ) #创建两个Q-Q图可视化两个回归模型之间残差的差异 box - cox 变换 是将非正态分布数据集转换为正态分布数据集的常用方法。 这种方法背后的基本思想是使用以下公式为λ找到一些值,以便转换后的
我们 进行 数据转换的原因是:除了小样本可以考虑非参数,大部分的统计原理和参数检验都是基于正态分布推得。 关于 box - cox 转换的基础内容请看: Box Cox - 变换 方法及其实现运用.pptx 了解极大似然估计:极大似然估计思想的最简单解释 通过上面的内容可以知道,
@ R语言 进行 Box - Cox 变换 R语言 进行 Box - Cox 变换 Box - Cox 变换 Box Cox 在1964年提出的一种广义幂 变换 方法,是统计建模中常用的一种数据 变换 ,用于连续的响应变量不满足正态分布的情况。 Box - Cox 变换 的主要特点是引入一个参数,通过数据本身估计该参数进而确定应采取的数据 变换 形式, Box - Cox 变换 可以明显地改善数据的正态性、对称性和方差相等性,对许多实际数据都是行之有效的。 对某百货公司连续十年的销售业绩 进行 线性拟合。其中Xi为年份,Yi为对应销售额。采用 R语言
在许多情况下,为了满足经典线性模型的正态性假设,常常需要使用指数 变换 或者对数转化,使其转换后的数据接近正态,比如数据是非单峰分布的,或者各种混合分布,,虽然不一定起作用,但是不妨试试。 我们使用平日最常见的 box - cox 转换,因为之前看到有人问到如何使用,spss 进行 转换,到网上找了资料,是需要语法的,在spss中 进行 语法指令,显然相比较用R,还是很不方便的。 D=read.csv("/Use
Box - Cox 变换 的作用是把不怎么正态化的一组数,让它们变得更加正态化。详情可以参考百度百科: Box - Cox 变换 R语言 有好几个包可以实现 Box - Cox 变换 ,比如car、MASS、forecast。发现forecast是最简单而且容易理解的。 2.求最优的λ 比如对于随便一个数组y,例如 y=c(269,321,585,871,1475,2821,392,594,4950,2577,5...
1.消除异方差 代码实现如下: data3.2&amp;lt;-read.csv(&quot;C:/Users/Administrator/Desktop/data3.2.csv&quot;,head=TRUE) library(MASS) bc3.2&amp;lt;- box cox (y~x1+x2,data=data3.2,lambda=seq(-2,2,0.01)) # λ的取值为区间[-2,2]上步长为0.01的值,bc3.2中...
参加kaggle比赛过程中,看到很多人在预处理阶段会对某些特征X做如下操作 Y = log(1+X), 说是可以把这个特征的分布正态化, 使其更加符合后面数据挖掘方法对数据分布的假设. 自己试了一下,有时的确可以提高准确度,有时却降低了准确度,很好奇其中的原理,遂在网上搜索了一番,整理如下. Y = log(1+X)这个操作的真名应该时 box cox 变换 ,用来降低X的skewness值,达到接近正...
Box - Cox 变换 是统计建模中常用的一种数据 变换 ,用于连续的响应变量不满足正态分布的情况。比如在使用线性回归的时候,由于残差 \epsilon 不符合正态分布而不满足建模的条件,这时候要对响应变量Y 进行 变换 ,把数据变成正态的。 变换 的形式是 之前在《笔记︱信用风险模型(申请评分、行为评分)与数据准备(违约期限、WOE转化)》中提到过WOE转换,WOE转换=分箱法=Logit值,与等深、等宽不同是根据被解释变量来重新定义一个WOE值 **笔者将其定位于对自变量的数据转换。 现在来看看对于因变量的数据转换: BOX - COX 转换。** 内容主要参考交大的课件: Box Cox - 变换 方法及其实现运用.pptx 线性回...
y=c(160,260,210,265,240,220,275,160,275,250) x1=c(70,75,65,74,72,68,78,66,70,65) x2=c(35,40,40,42,38,45,42,36,44,42) x3=c(1,2.4,2,3,1.2,1.5,4,2,3.2,3) shuju shuju shuju.reg=lm(y~.,data=shuju)#(2
Box Cox 于1964年提出了一种基于极大似然法的幂转换模型。 Box - Cox 幂分布族是一种十分有用的连续分布族。其转换模型为 y(λ)={yλ−1λ,λ≠0lny,λ=0(1)(1)y(λ)={yλ−1λ,λ≠0lny,λ=0 y^{(\lambda)} = \begin {cases} \frac {y^\lambda-1} {\lambda},\lambda... 很高兴为您服务!我可以为您提供一个 R语言 版的多因素 Cox 分析函数,它可以帮助您完成多因素 Cox 模型的分析。它的代码如下: cox .multi.reg <- function(formula, data, subset, na.action) { model <- cox ph(formula, data=data, subset=subset, na.action=na.action) return(model)