2014-03-14 27 views
0

Levene如何使用平方殘差而不是絕對值來進行檢驗?Levene使用平方殘差的檢驗

我試過levene.testlawstat包和leveneTestcar包,它們都使用絕對殘差。

目的是重現SAS輸出,默認情況下使用平方殘差。

回答

2
iris.lm <- lm(Petal.Width ~ Species, data = iris) 
anova(lm(residuals(iris.lm)^2 ~ iris$Species)) 
## Analysis of Variance Table 
## 
## Response: residuals(iris.lm)^2 
##    Df Sum Sq Mean Sq F value Pr(>F)  
## iris$Species 2 0.100 0.0500 14.8 1.4e-06 *** 
## Residuals 147 0.497 0.0034      
## --- 
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

也許它有助於理解這是如何工作的。

正如指出的here,Levene的測試只是每個觀察點與其中心點之間距離的方差分析。 Levene測試的不同實現方式因「距離」和「中心」的定義而異。 「距離」可以表示絕對差或平方差。

「中心」可以表示平均值或中位數。

SAS默認使用平方差和平均值。 R中的leveneTest中的car包僅使用絕對差值,而默認值爲中值。在lawstat包中,levene.test也是如此。

所有四種可能的組合可以手動完成,如下所示。

require(plyr) 
x <- ddply(iris, .(Species), summarize 
      , abs.mean = abs(Petal.Width - mean(Petal.Width)) 
      , abs.median = abs(Petal.Width - median(Petal.Width)) 
      , squared.mean = (Petal.Width - mean(Petal.Width))^2 
      , squared.median = (Petal.Width - median(Petal.Width))^2) 

anova(lm(abs.mean ~ Species, data = x)) # Levene's test 
## Analysis of Variance Table 
## 
## Response: abs.mean 
##   Df Sum Sq Mean Sq F value Pr(>F)  
## Species  2 0.53 0.2648 19.6 2.7e-08 *** 
## Residuals 147 1.98 0.0135      
## --- 
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

anova(lm(abs.median ~ Species, data = x)) # Brown-Forsythe test 
## Analysis of Variance Table 
## 
## Response: abs.median 
##   Df Sum Sq Mean Sq F value Pr(>F)  
## Species  2 0.642 0.321 19.9 2.3e-08 *** 
## Residuals 147 2.373 0.016      
## --- 
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

anova(lm(squared.mean ~ Species, data = x)) # default SAS Levene's Test 
## Analysis of Variance Table 
## 
## Response: squared.mean 
##   Df Sum Sq Mean Sq F value Pr(>F)  
## Species  2 0.100 0.0500 14.8 1.4e-06 *** 
## Residuals 147 0.497 0.0034      
## --- 
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

anova(lm(squared.median ~ Species, data = x)) # Who-Knows-Whose Test 
## Analysis of Variance Table 
## 
## Response: squared.median 
##   Df Sum Sq Mean Sq F value Pr(>F)  
## Species  2 0.096 0.0478 13.6 3.7e-06 *** 
## Residuals 147 0.515 0.0035      
## --- 
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

要說明的是上述前兩個重現leveneTest:

require(car) 
leveneTest(Petal.Width ~ Species, data = iris, center = mean) 
## Levene's Test for Homogeneity of Variance (center = mean) 
##  Df F value Pr(>F)  
## group 2 19.6 2.7e-08 *** 
##  147      
## --- 
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

leveneTest(Petal.Width ~ Species, data = iris, center = median) 
## Levene's Test for Homogeneity of Variance (center = median) 
##  Df F value Pr(>F)  
## group 2 19.9 2.3e-08 *** 
##  147      
## --- 
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

由於人們常常具有線性模型的殘差手(平均)準備去,它往往更方便做

iris.lm <- lm(Petal.Width ~ Species, data = iris) 
anova(lm(residuals(iris.lm)^2 ~ iris$Species)) 
## Analysis of Variance Table 
## 
## Response: residuals(iris.lm)^2 
##    Df Sum Sq Mean Sq F value Pr(>F)  
## iris$Species 2 0.100 0.0500 14.8 1.4e-06 *** 
## Residuals 147 0.497 0.0034      
## --- 
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

因此,答案在頂部。