|
spss 正态性检验及转换
严格说来,回答你的问题需要讲四个W:
What’s normal transformation?(什么是正态转换)
Why do we need normal transformation?(为何做正态转换)
When is normal transformation needed? (何时做正态转化)
How can we do normal transformation?(如何做正态转化)
我担心如果只讲How(如何做),也许有些初学者不分场合,误用滥用。但是,我同样担心如果从ABC讲起,难免过分啰嗦,甚至有藐视大家的智商之嫌。所幸者,我们已经进入Web 2.0年代,有关上述What, Why, When问题的答案网上唾手可得。如果对这些问题不甚了了的读者,强烈建议先到google上用“How to transform data to normal distribution”搜一下(或点击下面的“前10条”),前10条几乎每篇都是必读的经典。
有了上述交代,我们可以比较放心地来讨论如何做正态转化的问题了。具体来说,涉及以下几步:
第一步,查看原始变量的分布形状及其描述参数(Skewness和Kurtosis)。这可以用Frequencies中的Histogram或Examination中的BoxPlot,如:
有两个方法
1:
FREQUENCIES VAR = x / STATISTICS = SKEW, KURT / HISTOGRAM = NORMAL.
EXAMINE VAR = x / STATISTICS = SKEW, KURT / PLOT = BOXPLOT.
第二步,根据变量的分布形状,决定是否做转换。这里,主要是看一下两个问题:
左右是否对称,也就是看Skewness(偏差度)的取值。如果Skewness为0,则是完全对称(但罕见);如果Skewness为正值,则说明该变量的分布为positively skewed(正偏态,见下图1b);如果Skewness为负值,则说明该变量的分布为negatively skewed(负偏态,见图1a)。然而,肉眼直观检查,往往无法判断偏态的分布是否与对称的正态分布有“显著”差别,所以需要做显著性检验。如同其它统计显著性检验一样,Skewness的绝对值如大于其标准误差的1.96倍,就被认为是与正态分布有显著差别。如果检验结果显著,我们也许(注意这里我用的是“也许”一词)可以通过转换来达到或接近对称,但见注1中的说明。
峰态是否陡缓适度,也就是看Kurtosis(峰态)是否过分peaked(陡峭)或过分flat(平坦)。如果Kurtosis为0,则说明该变量分布的峰态正合适,不胖也不瘦(但罕见);如果Kurtosis为正值,则说明该变量的分布峰态太陡峭(瘦高个,见图2b);反之,如果Kurtosis为负值,该变量的分布峰态太平缓(矮胖子,见图2a)。峰态是否适度,更难直观看出,也需要通过显著检验。如同Skewness一样,Kurtosis的绝对值如果大于其标准误差的1.96倍,就被认为与正态分布有显著差别。这时,我们也许可以通过转换来达到或接近正态分布(峰态),但见注1中的说明。
图2a
2; analyze—nonparametric tests—1-sample K-S
P >0.05,正太分布
图2b
第三步、如果需要做转化,还是根据变量的分布形状,确定相应的转换公式。最常见的情况是正偏态加上陡峰态。如果是中度偏态(如Skewness为其标准误差的2-3倍),可以考虑取根号值来转换,以下是SPSS的指令(其中”nx”是原始变量x的转换值,参见注2):
COMPUTE nx = SQRT(x).
如果高度偏态(如Skewness为其标准误差的3倍以上),则可以取对数,其中又可分为自然对数和以10为基数的对数。如以下是转换自然对数的指令(注2):
COMPUTE nx = LN(x).
以下是转换成以10为基数的对数(其纠偏力度最强,有时会矫枉过正,将正偏态转换成负偏态,注2):
COMPUTE nx = LG10(x).
另外,在计量经济学中广泛使用Box-Cox转换方法,有些时间序列分析的专用软件中提供转换程序,但SPSS并不提供。虽也可以写syntax来做,但很复杂,在此不谈了。
上述公式只能减轻或消除变量的正偏态(positive skewed),但如果不分青红皂白(即不仔细操作第一和第二步)地用于负偏态(negative skewed)的变量,则会使负偏态变得更加严重。如果第一步显示了负偏态的分布,则需要先对原始变量做reflection(反向转换),即将所有的值反过来,如将最大值变成最小值、最小值变成最大值、等等。如果一个变量的取值不多(如7-分量表),可用如下指令来反转:
RECODE x (1=7)(2=6)(3=5)(5=3)(6=2)(7=1).
如果变量的取值很多或有小数、分数,上述方法几乎不可能,则需要写如下的指令(不知大家现在是否信服了为什么要学syntax吗?):
COMPUTE nx = max – x + 1.
其中max是x的最大值。
第四步、回到第一步,再次检验转换后变量的分布形状。如果没有解决问题,或者甚至恶化(如上述的从正偏态转成负偏态),需要再从第二或第三步重新做起,然后再回到第一步的检验,等等,直至达到比较令人满意的结果(见注3)。
注:
如同其它统计检验量一样,Skewness和Kurtosis的的标准误差也与样本量直接有关。具体说来,Skewness的标准误差约等于,而Kurtosis的标准误差约等于,其中n均为样本量。由此可见,样本量越大,标准误差越小,因此同样大小的Skewness和Kurtosis在大样本中越可能与正态分布有显著差别。这也许就是SW在问题中提到的“很多学科都在讲大样本不用太考虑正态分布问题”的由来。我的看法是,如果小样本的Skewness和Kurtosis是显著的话,一定要转换;在大样本的条件下,如果Skewness和Kurtosis是轻度偏差,也许不需要转换,但如果严重偏差,也是要转换。
大家知道,根号里的x不能为负数,对数或倒数里的x不能为非正数(即等于或小于0)。如果你的x中有是负数或非正数,需要将其做线性转换成非负数(即等于或大于0)或正数(大于0),如 COMPUTE nx = SQRT (x – min) 或 COMPUTE nx = LN (x – min + 1),其中的min是x的最小值(为一个非正数)。
不是任何分布形态的变量都可以转换的。例外之一是“双峰”或“多峰”分布(distribution with dual or multiple modality),没有任何公式可以将之转换成单峰的正态分布。
ps 丁香园介绍的方法:
可以应用变量变换的方法,将不服从正态分布的资料转化为非正态分布或近似正态分布。常用的变量变换方法有对数变换、平方根变换、倒数变换、平方根反正玄变换等,应根据资料性质选择适当的变量变换方法。
1、对数变换 即将原始数据X的对数值作为新的分布数据:
X’=lgX
当原始数据中有小值及零时,亦可取X’=lg(X+1)
还可根据需要选用X’=lg(X+k)或X’=lg(k-X)
对数变换常用于(1)使服从对数正态分布的数据正态化。如环境中某些污染物的分布,人体中某些微量元素的分布等,可用对数正态分布改善其正态性。(2)使数据达到方差齐性,特别是各样本的标准差与均数成比例或变异系数CV接近于一个常数时。
2、平方根变换 即将原始数据X的平方根作为新的分布数据。
X’=sqrt(X)
平方根变换常用于:1)使服从Poission分布的计数资料或轻度偏态资料正态化,可用平方根变换使其正态化。2)当各样本的方差与均数呈正相关时,可使资料达到方差齐性。
3、倒数变换 即将原始数据X的倒数作为新的分析数据。
X’=1/X
常用于资料两端波动较大的资料,可使极端值的影响减小。
4、平方根反正旋变换 即将原始数据X的平方根反正玄值做为新的分析数据。
X’=sin-1sqrt(X)
常用于服从二项分布的率或百分比的资料。一般认为等总体率较小如<30%时或较大(如>70%时),偏离正态较为明显,通过样本率的平方根反正玄变换,可使资料接近正态分布,达到方差齐性的要求。
你可以根据自己的资料适当转化。另外,可以考虑其他分析方法,比如秩和检验。
原文链接:http://tezhengku.com/topic/?p=263
|
|