當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R chisq.test 計數數據的皮爾遜卡方檢驗


R語言 chisq.test 位於 stats 包(package)。

說明

chisq.test 執行卡方列聯表測試和goodness-of-fit 測試。

用法

chisq.test(x, y = NULL, correct = TRUE,
           p = rep(1/length(x), length(x)), rescale.p = FALSE,
           simulate.p.value = FALSE, B = 2000)

參數

x

數值向量或矩陣。 xy 也可以都是因子。

y

數值向量;如果 x 是矩陣,則忽略。如果x是一個因子,那麽y應該是相同長度的因子。

correct

指示在計算 2 x 2 表的檢驗統計量時是否應用連續性校正的邏輯:從所有 差異中減去一半;然而,修正不會大於差異本身。如果 simulate.p.value = TRUE 則不進行更正。

p

x 長度相同的概率向量。如果 p 的任何條目為負數,則會給出錯誤。

rescale.p

邏輯標量;如果為 TRUE,則將 p 重新調整(如有必要)以使其總和為 1。如果 rescale.p 為 FALSE,並且 p 的總和不為 1,則會給出錯誤。

simulate.p.value

指示是否通過蒙特卡羅模擬計算 p 值的邏輯。

B

一個整數,指定蒙特卡羅測試中使用的重複次數。

細節

如果 x 是具有一行或一列的矩陣,或者如果 x 是向量並且未給出 y,則執行 goodness-of-fit 測試(x 被視為一維列聯表)。 x 的條目必須是非負整數。在這種情況下,測試的假設是總體概率是否等於 p 中的概率,或者如果未給出 p 則全部相等。

如果x是一個至少有兩行和兩列的矩陣,則將其視為二維列聯表:x的條目必須是非負整數。否則,xy必須是相同長度的向量或因子;刪除缺失值的情況,將對象強製為因子,並根據這些因子計算列聯表。然後對原假設進行皮爾遜卡方檢驗,即二維列聯表中單元格計數的聯合分布是行和列邊際的乘積。

如果 simulate.p.valueFALSE ,則 p 值是根據檢驗統計量的漸近卡方分布計算的;連續性校正僅在 2×2 情況下使用(如果 correctTRUE ,則為默認值)。否則,將使用 B 重複項計算蒙特卡羅檢驗(Hope,1968)的 p 值。默認 B = 2000 意味著最小 p 值約為 0.0005 ( )。

在列聯表情況下,模擬是通過從具有給定邊際的所有列聯表的集合中隨機抽樣來完成的,並且僅當邊際嚴格為正時才有效。從未使用連續性校正,並且在不使用連續性校正的情況下引用統計數據。請注意,這不是卡方檢驗假設的通常抽樣情況,而是費舍爾精確檢驗的假設情況。

在 goodness-of-fit 情況下,模擬是通過從指定的離散分布中隨機采樣來完成的p,每個樣本的大小n = sum(x)。這個模擬是在R並且可能會很慢。

"htest" 的列表包含以下組件:

statistic

卡方檢驗統計量的值。

parameter

檢驗統計量的近似卡方分布的自由度,NA(如果 p 值是通過蒙特卡洛模擬計算的)。

p.value

檢驗的 p 值。

method

指示所執行測試類型的字符串,以及是否使用蒙特卡羅模擬或連續性校正。

data.name

給出數據名稱的字符串。

observed

觀察到的計數。

expected

原假設下的預期計數。

residuals

皮爾遜殘差,(observed - expected) / sqrt(expected)

stdres

標準化殘差 (observed - expected) / sqrt(V) ,其中 V 是殘差單元方差(Agresti, 2007,第 2.4.5 節針對 x 是矩陣的情況,否則 n * p * (1 - p) )。

例子


## From Agresti(2007) p.39
M <- as.table(rbind(c(762, 327, 468), c(484, 239, 477)))
dimnames(M) <- list(gender = c("F", "M"),
                    party = c("Democrat","Independent", "Republican"))
(Xsq <- chisq.test(M))  # Prints test summary
Xsq$observed   # observed counts (same as M)
Xsq$expected   # expected counts under the null
Xsq$residuals  # Pearson residuals
Xsq$stdres     # standardized residuals


## Effect of simulating p-values
x <- matrix(c(12, 5, 7, 7), ncol = 2)
chisq.test(x)$p.value           # 0.4233
chisq.test(x, simulate.p.value = TRUE, B = 10000)$p.value
                                # around 0.29!

## Testing for population probabilities
## Case A. Tabulated data
x <- c(A = 20, B = 15, C = 25)
chisq.test(x)
chisq.test(as.table(x))             # the same
x <- c(89,37,30,28,2)
p <- c(40,20,20,15,5)
try(
chisq.test(x, p = p)                # gives an error
)
chisq.test(x, p = p, rescale.p = TRUE)
                                # works
p <- c(0.40,0.20,0.20,0.19,0.01)
                                # Expected count in category 5
                                # is 1.86 < 5 ==> chi square approx.
chisq.test(x, p = p)            #               maybe doubtful, but is ok!
chisq.test(x, p = p, simulate.p.value = TRUE)

## Case B. Raw data
x <- trunc(5 * runif(100))
chisq.test(table(x))            # NOT 'chisq.test(x)'!

來源

蒙特卡羅模擬的代碼是 Patefield (1981) 的 Fortran 算法的 C 語言翻譯。

參考

Hope, A. C. A. (1968). A simplified Monte Carlo significance test procedure. Journal of the Royal Statistical Society Series B, 30, 582-598. doi:10.1111/j.2517-6161.1968.tb00759.x.

Patefield, W. M. (1981). Algorithm AS 159: An efficient method of generating r x c tables with given row and column totals. Applied Statistics, 30, 91-97. doi:10.2307/2346669.

Agresti, A. (2007). An Introduction to Categorical Data Analysis, 2nd ed. New York: John Wiley & Sons. Page 38.

也可以看看

對於 goodness-of-fit 測試,特別是連續分布,ks.test

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Pearson's Chi-squared Test for Count Data。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。