@R语言进行Box-Cox变换

R语言进行Box-Cox变换

Box-Cox变换是Box和Cox在1964年提出的一种广义幂变换方法,是统计建模中常用的一种数据变换,用于连续的响应变量不满足正态分布的情况。Box-Cox变换的主要特点是引入一个参数,通过数据本身估计该参数进而确定应采取的数据变换形式,Box-Cox变换可以明显地改善数据的正态性、对称性和方差相等性,对许多实际数据都是行之有效的。

一个例子

对某百货公司连续十年的销售业绩进行线性拟合。其中Xi为年份,Yi为对应销售额。采用R语言进行分析:

导入数据:

#1.导入数据
mydata2 <- "
xi yi
0 98
1 135
2 162
3 178
4 221
5 232
6 283
7 300
8 374
9 385
"
mydata2 <- read.table(header=TRUE, text=mydata2)
head(mydata2)
attach(mydata2)   #使得mydata2中的xi,yi可以直接作为单独变量
head(xi)

绘制散点图观看大致走向:

#install.packages("ggplot2")     #下载ggplot2,仅第一需要
library(ggplot2)        #加载ggplot2包
ggplot(data=mydata2,aes(xi,yi))+geom_point(color="blue")+labs(title="3.17a ",x="year",y="annual sales")

进行Box-Cox变换

第一步:导入包(没有先安装)

#step1 read packages
#install.packages("MASS")
library(MASS)   #基于此包进行box-cox转换
#install.packages("moments")
library(moments) #基于此包进行峰度偏度计算

第二步:构建模型并检验正态性

#step2 构建线性模型并检查是否满足正态分布
lm.sales1<-lm(yi~xi,data=mydata2)
res2<-lm.sales1$residual
hist(res2)  #绘制残差频率分布图
#head(res2)
skewness(res2)  #计算偏度,结果:0.13
#通过残差频率分布图和偏度值可以发现残差并不满足正态分布


第三步:进行box-cox转换,确定lambda值

#step3 进行box-cox转换,确定λ值
b2=boxcox(yi~xi, data=mydata2) # 定义函数类型和数据
I=which(b2$y==max(b2$y))
b2$x[I]#lambda=0.55,即为图中最高点

第四步:检验转化效果

#step4 依据上一步box-cox转换的lambda值,带入模型
lm.sales2<-lm(yi^0.55~xi,data=mydata2)
hist(lm.sales2$residuals)
skewness(lm.sales2$residuals)
#此时的残差分布已经接近正态分布了


至此Box-Cox转换完成。

R语言进行Box-Cox变换相关推荐

  1. R语言生存分析COX回归分析实战:以乳腺癌数据为例

    R语言生存分析COX回归分析实战:以乳腺癌数据为例 目录

  2. R语言生存分析COX回归分析实战:两种治疗方法发生肾功能损害的情况

    R语言生存分析COX回归分析实战:两种治疗方法发生肾功能损害的情况 目录

  3. R语言生存分析COX回归分析实战:放疗是否会延长胰脏癌症患者的生存时间

    R语言生存分析COX回归分析实战:放疗是否会延长胰脏癌症患者的生存时间 目录

  4. R语言epiDisplay包cox.display函数获取cox回归模型汇总统计信息(风险率HR、调整风险率及其置信区间、模型系数t检验的p值、Wald检验的p值和似然比检验的p值)、保存结果到csv

    R语言使用epiDisplay包的cox.display函数获取cox回归模型的汇总统计信息(风险率HR.调整的风险率及其置信区间.模型系数的t检验的p值.Wald检验的p值和似然比检验的p值).使用 ...

  5. r语言归一化_数据变换-归一化与标准化

    一般在机器学习的模型训练之前,有一个比较重要的步骤是数据变换. 因为,一般情况下,原始数据的各个特征的值并不在一个统一的范围内,这样数据之间就没有可比性. 数据变换的目的是将不同渠道,不同量级的数据转 ...

  6. R语言构建回归模型并进行模型诊断(线性关系不满足时)、进行变量变换(Transforming variables)、使用car包中的boxTidwell函数对预测变量进行Box–Tidwell变换

    R语言构建回归模型并进行模型诊断(线性关系不满足时).进行变量变换(Transforming variables).使用car包中的boxTidwell函数对预测变量进行Box–Tidwell变换 目 ...

  7. 基础004:R语言数据处理和变换——dplyr

    dplyr 背景简介 安装和数据准备 常用函数 变量筛选select 数据筛选filter 排序arrange 创建新变量mutate 本文"植物微生物组"公众号原创,ID: pl ...

  8. R语言使用timeROC包计算存在竞争情况下的生存资料多个标记物在相同时间下的cox及协变量分析AUC值、并可视化多个标记物在相同时间下的ROC值、多指标的ROC曲线(Time-dependent R

    R语言使用timeROC包计算存在竞争情况下的生存资料多个标记物在相同时间下的cox及协变量分析AUC值.并可视化多个标记物在相同时间下的ROC值.多指标的ROC曲线(Time-dependent R ...

  9. R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行SpatialSign变换(将数据投影到单位圆之内)、设置method参数为spatialSign

    R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行SpatialSign变换(将数据投影到单位圆之内).设置method参数为spatialSign 目录

最新文章

  1. OpenCV3.0.0下的视频稳像代码,效果不错哦
  2. document.body ,window.screen javascript对象属性取值意义
  3. 小工匠聊架构 - 构建架构思维
  4. 13.transform确保目标空间足够大
  5. 前后数据交互(ajax) -- 初始化页面表格
  6. 全球互联网领域第一人!马云获福布斯终身成就奖
  7. MNIST机器学习入门
  8. 电商订单ElasticSearch同步解决方案--使用logstash
  9. mysql 5.7 安装后添加root用户
  10. ubuntu 下 使用vmware 虚拟xp 声卡没声音 解决
  11. 【优化算法】蜜獾优化算法(HBA)【含Matlab源码 1437期】
  12. et中计算机的快捷键,ET软件快捷键
  13. ABBYY FineReader 12使用教程
  14. 优化UE4性能 、减少DrawCall——材质中使用自定义基元数据
  15. Markdown必备,Lsky-pro图床配置
  16. 通过ADB命令行卸载或删除你的Android设备中的应用
  17. WLAN AP安全策略中WPA认证与WPA2认证的差异
  18. alias常见小问题汇总20例
  19. 送女友的html语言,html+css+js精美页面,送女友
  20. redis数据备份与恢复

热门文章

  1. win10开机慢怎么解决_电脑开机速度慢怎么解决?Win10电脑开机速度变慢原因及解决方法...
  2. app软件开发现状及前景
  3. VoIP 软电话客户端实例
  4. MFC 如何添加快捷键
  5. Arch Linux 安装 Anbox
  6. Windows下HdWiki安装步骤
  7. mysql flush pri_mysql命令flush privileges
  8. 大屏可视化色彩设计基本知识
  9. 芸品绿-PythonWeb开发工程师
  10. eventlet 协程