Stata:一次性实现变量的 9 种正态变换

各位小伙伴已经陆续开学,见到老朋友和新朋友的欣喜之余,学习也关闭了摸鱼模式,正式开启科研模式。开学的这几天,已经有好几位萌新来问我数据不正态该怎么办?今天我们就一起来看一看可以怎么办。

为什么要进行正态检验?

我们经常使用的参数检验,方差分析,线性回归分析等统计方法只有在变量服从正态分布时才能表现最佳,所以保证变量的正态性是非常重要的,这也是进行统计分析的重要步骤。

如何检验数据正态与否?

正态性检验的方法有两大类:

  1. 一是图示法:概率图(probability-probability plot, P-P plot)和分位数图(quantile-quantile plot, Q-Q plot), 图示散点几乎都在一条直线上,可认为资料服从正态分布。
  2. 二是计算法,计算法又分为两种:
  • 对偏度(skewness)和峰度(kurtosis)各用一个指标来评定,其中以矩法(method of moment),又称动差法,效率最高;矩法是利用数学上的矩原理来检验偏度和峰度。偏度指分布不对称的程度和方向,用偏度系数(coefficient of skewness)衡量。
  • 仅用一个指标来综合评定,其中以 W 检验法(S.S.shapiro & M.B.Wilk, 1965)和 W’ 检验法(S. S. Shapiro & R.S.Francia,1972)效率最高,适用于样本含量 n 少于100的资料;D检验法(R.B.D’Agostino,1971)效率也高,适用于样本含量 n 为10-2000的资料。

怎样进行数据正态转换?

clear all
sysuse citytemp, clear
ladder tempjuly

*> Transformation formula chi2(2) P(chi2)
*> ------------------------------------------------------------------
*> cubic tempjuly^3 47.49 0.000
*> square tempjuly^2 19.70 0.000
*> identity tempjuly 3.83 0.147
*> square root sqrt(tempjuly) 1.83 0.400
*> log log(tempjuly) 5.40 0.067
*> 1/(square root) 1/sqrt(tempjuly) 13.72 0.001
*> inverse 1/tempjuly 26.36 0.000
*> 1/square 1/(tempjuly^2) 64.44 0.000
*> 1/cubic 1/(tempjuly^3) 116.16 0.000

对变量“tempjuly ”进行梯度正态变换,进行了9种变换,结果发现3种变换的结果符合正态分布(p>0.05),且平方根的效果更好,p = 0.400

gladder tempjuly, l1title("") ylabel(none) xlabel(none)

梯度变换后的直方图结果可以直观感受变换的效果:

梯度变换后的直方图
qladder tempjuly, ylabel(none) xlabel(none)

梯度变换后的 q-q 图:

梯度变换后的 q-q 图

除了上述转换方式之外,还有 box-cox 等转换方法,具体介绍将在下期推文进行。

参考资料:

[1] 孙振球,徐勇勇.医学统计学[M]北京:人民卫生出版社,2014:39
[2] stata16.0系统数据

点击这里跳转到 RStata 短书平台获取附件:Stata:一次性实现变量的 9 种正态变换

评论