数据不满足正态分布?试试Box-Cox变换吧!
转自个人微信公众号【Memo_Cleon】的统计学习笔记:数据不满足正态分布?试试Box-Cox变换吧!
当需要对不满足正态分布的数据进行变换时,统计教材上常常给出的方法有对数变换、平方根变换、倒数变换等,判断哪种方法更合适并不是一件容易的事情。有没有一种“万能”的变化方法减少试错的次数?如果有,那一定是Box-Cox变换。Box-Cox变换是一种广义幂变换方法,可以明显地改善数据的正态性和方差齐性,但变换后数据是否满足正态性仍需要考察验证。
y为连续变量,且要求取值为正(若取值为负则需要对原始数据加上一个常数使其为正)。λ为变换参数,不同的λ对应不同的变换方式,当λ=0时相当于对数变换,λ=2时等同于平方变换,λ=1时等同于线性变换,相当于没有进行变换,λ=1/2时等同于平方根变换,λ=-1时等同于倒数变换。通过求解λ值即可确定具体的变换方式,λ值的估计方法可采用最大似然估计。
(1)θ模型
(2)λ模型
(3)仅变换左侧变量模型(仅对因变量进行变换)
(4)变换右侧变量模型(对自变量进行变换)
图形>>分布图>>直方图,变量选择WBC,确定。也可以采用该菜单下的正态分位图。
histogram WBC
(bin=16, start=2.7, width=1.50875)
直方图显示,数据大体呈右偏态。
swilk WBC
【2】接下来我们对数据进行Box-Cox变换:
首先生成对应菜单操作的命令:boxcox WBC,model(lhsonly)。
结果包括迭代日志、模型拟合的基本信息和三个表。本例只对WBC进行Box-Cox变换,并未纳入自变量,因此模型拟合信息就是只有截距的空白模型的信息。
第一个表是Box-Cox 变换参数λ的结果,在stata中只对左侧变量进行变换的模型中用θ来表示(见前面的模型介绍),λ=-0.2320,即WBC变换值为(WBC^(-0.2320)-1)/(-0.2320),如前所言,这种变换的结果可能是最佳的但并没有实际意义,在实际变换时可以考虑取其临近值(λ=0)的变换,这样可能会更容易解释。统计学结果也显示但该值(与0相比)并无统计学差异,这也说明λ取值为0是合适的。
第二个表包含尺度变量参数的估计值,会显示各个自变量的参数估计值和模型标准差。当存在自变量时,可在Box-Cox回归对话框中过的[报告]选项卡中选中执行似然比检验,这样我们就可以获得模型参数的统计检验结果。本例只是对因变量进行了变化,该表实际意义不大。经过变换后WBC的均值为1.6555(模型截距),标准差为0.2435。
第三个表包含了Box-Cox变换中三个常用函数的限制性似然比检验输出结果,即倒数变换(λ=1)、对数变换(λ=0)和线性回归(λ=1,相当于不进行变换),结果显示倒数变换和线性回归被拒绝,而对数变换无统计学差异,这也说明我们采用取λ=-0.2320的临近值λ=0变换是合适的。
通过创建按钮或者手动输入变换公式:(WBC^(-0.2319767)-1)/(-0.2319767)。相应命令为:
generate BCwbc = (WBC^(-0.2319767)-1)/(-0.2319767)
(bin=16, start=.88712829, width=.08837758)
统计>>汇总,表格和假设检验>>分布图和检验>>Shapiro-Wilk正态性检验,变量选择BCwbc,确定。
swilk BCwbc
转自个人微信公众号【Memo_Cleon】的统计学习笔记:数据不满足正态分布?试试Box-Cox变换吧!
END