如何在SPSS中做數據正態轉化

嚴格說來,回答你的問題需要講四個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講起,難免過分囉嗦,甚至有藐視大家的智商之嫌。所幸者,我們已經進入Web2.0年代,有關上述What, Why,When問題的答案網上唾手可得。如果對這些問題不甚了了的讀者,強烈建議先到google上用“How to transform datato 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爲正值,則說明該變量的分佈爲positivelyskewed(正偏態,見下圖1b);如果Skewness爲負值,則說明該變量的分佈爲negativelyskewed(負偏態,見圖1a)。然而,肉眼直觀檢查,往往無法判斷偏態的分佈是否與對稱的正態分佈有“顯著”差別,所以需要做顯著性檢驗。如同其它統計顯著性檢驗一樣,Skewness的絕對值如大於其標準誤差的1.96倍,就被認爲是與正態分佈有顯著差別。如果檢驗結果顯著,我們也許(注意這裏我用的是“也許”一詞)可以通過轉換來達到或接近對稱,但見注1中的說明。

    image

    圖1a 圖1b
  2. 峯態是否陡緩適度,也就是看Kurtosis(峯態)是否過分peaked(陡峭)或過分flat(平坦)。如果Kurtosis爲0,則說明該變量分佈的峯態正合適,不胖也不瘦(但罕見);如果Kurtosis爲正值,則說明該變量的分佈峯態太陡峭(瘦高個,見圖2b);反之,如果Kurtosis爲負值,該變量的分佈峯態太平緩(矮胖子,見圖2a)。峯態是否適度,更難直觀看出,也需要通過顯著檢驗。如同Skewness一樣,Kurtosis的絕對值如果大於其標準誤差的1.96倍,就被認爲與正態分佈有顯著差別。這時,我們也許可以通過轉換來達到或接近正態分佈(峯態),但見注1中的說明。

image

圖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來做,但很複雜,在此不談了。

上述公式只能減輕或消除變量的正偏態(positiveskewed),但如果不分青紅皁白(即不仔細操作第一和第二步)地用於負偏態(negativeskewed)的變量,則會使負偏態變得更加嚴重。如果第一步顯示了負偏態的分佈,則需要先對原始變量做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的標準誤差約等於clip_image002,而Kurtosis的標準誤差約等於clip_image002[3],其中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 ormultiple modality),沒有任何公式可以將之轉換成單峯的正態分佈
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章