如何在SPSS中做数据正态转化

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何在SPSS中做数据正态转化?
SW @ 2008-11-24:
谢谢祝老师在“为何取中后的相关系数不等于0?”中对我问题的答复,我的数据确实不完全符合正态分布。

接下来的问题是,很多学科都在讲大样本不用太考虑正态分布问题,但事实上由此造成的误差确实存在,有时还会比较大,您的意见呢?另外一个小问题,spss中如何进行数据正态转化?谢谢!
庄主 @ 2008-12-1:
严格说来,回答你的问题需要讲四个W:
1.What's normal transformation?(什么是正态转换)
2.Why do we need normal transformation?(为何做正态转换)
3.When is normal transformation needed? (何时做正态转化)
4.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,如:
FREQUENCIES VAR = x / STATISTICS = SKEW, KURT / HISTOGRAM = NORMAL.
EXAMINE VAR = x / STATISTICS = SKEW, KURT / PLOT = BOXPLOT.
第二步,根据变量的分布形状,决定是否做转换。

这里,主要是看一下两个问题:
1.左右是否对称,也就是看Skewness(偏差度)的取值。

如果Skewness为0,
则是完全对称(但罕见);如果Skewness为正值,则说明该变量的分布为positively skewed(正偏态,见下图1b);如果Skewness为负值,则说明该变量的分布为negatively skewed(负偏态,见图1a)。

然而,肉眼直观检查,往往无法判断偏态的分布是否与对称的正态分布有“显著”差别,所以需要做显著性检验。

如同其它统计显著性检验一样,Skewness的绝对值如大于其标准误差的1.96倍,就被认为是与正态分布有显著差别。

如果检验结果显著,我们也许(注意这里我用的是“也许”一词)可以通过转换来达到或接近对称,但见注1中的说明。

图1a 图1b
2.峰态是否陡缓适度,也就是看Kurtosis(峰态)是否过分peaked(陡峭)
或过分flat(平坦)。

如果Kurtosis为0,则说明该变量分布的峰态正合适,不胖也不瘦(但罕见);如果Kurtosis为正值,则说明该变量的分布峰态太陡峭(瘦高个,见图2b);反之,如果Kurtosis为负值,该变量的分布峰态太平缓(矮胖子,见图2a)。

峰态是否适度,更难直观看出,也需要通过显著检验。

如同Skewness一样,Kurtosis的绝对值如果大于其标准误差的1.96倍,就被认为与正态分布有显著差别。

这时,我们也许可以通过转换来达到或接近正态分布(峰态),但见注1中的说明。

图2a 图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)。

注:
1.如同其它统计检验量一样,Skewness和Kurtosis的的标准误差也与样本
量直接有关。

具体说来,Skewness的标准误差约等于,而Kurtosis
的标准误差约等于,其中n均为样本量。

由此可见,样本量越大,
标准误差越小,因此同样大小的Skewness和Kurtosis在大样本中越可能与正态分布有显著差别。

这也许就是SW在问题中提到的“很多学科都在讲大样本不用太考虑正态分布问题”的由来。

我的看法是,如果小样本的
Skewness和Kurtosis是显著的话,一定要转换;在大样本的条件下,如
果Skewness和Kurtosis是轻度偏差,也许不需要转换,但如果严重偏差,也是要转换。

2.大家知道,根号里的x不能为负数,对数或倒数里的x不能为非正数(即
等于或小于0)。

如果你的x中有是负数或非正数,需要将其做线性转换
成非负数(即等于或大于0)或正数(大于0),如COMPUTE nx = SQRT (x - min)或COMPUTE nx = LN (x - min + 1),其中的min是x的最小值
(为一个非正数)。

3.不是任何分布形态的变量都可以转换的。

例外之一是“双峰”或“多峰”
分布(distribution with dual or multiple modality),没有任何公式可以将之转换成单峰的正态分布。

相关文档
最新文档