假設檢驗 (檢定)

統計軟體 R

簡介

安裝

操作方式

變數與運算

有序數列

向量

矩陣

多維陣列

複數

因子

串列

資料框

時間數列

流程控制

輸出入

呼叫

函數

2D 繪圖

3D 繪圖

互動介面

套件列表

其他語言呼叫

R 的應用

集合

邏輯推論

模糊邏輯

機率邏輯

檢定

搜尋

優化算法

線性代數

決策樹

人工智慧

分群分類

SVM 向量機

神經網路

遺傳演算法

資料採礦

訊號處理

影像處理

語音處理

自然語言

機器學習

機器人

生物統計

數位訊號處理

方程式求解

數值分析

微積分

微分方程

線性規劃

圖形理論

統計推論

字串處理

正規表示式

視窗程式

網頁程式

文件格式

貝氏網路

訊息

機率統計書

相關網站

參考文獻

最新修改

簡體版

English

  • 本文改自:(徐俊曉) 統計學與R讀書筆記第五版
    • 授:用 GFDL 授權)
    • 源:http://cran.r-project.org/doc/contrib/Xu-Statistics_and_R.pdf
    • Chapter 22 假設檢驗 , 第 331 頁
    • 22.3 單樣本假設檢驗
      • 22.3.1 方差未知的正態分布均值的單樣本檢驗
      • 22.3.2 數據非正態時的情況
      • 22.3.3 方差已知的正態分布均值的單樣本檢驗
      • 22.3.4 功效與樣本量
      • 22.3.5 方差的區間估計及檢驗{卡方檢驗}
    • 22.4 方差齊性檢驗-F檢驗
      • 22.4.1 F分布的特點
      • 22.4.2 F檢驗
      • 22.4.3 多于 2 個正態樣本的方差檢驗: 參考 bertlett.test()
      • 22.4.4 2 個非正態樣本的方差檢驗: 參考ansari.test() 或 mood.test()
      • 22.4.5 多于 2 個非正態樣本:參考fligner.test()
    • 22.5 兩樣本均值的 t 檢驗
      • 22.5.1 t 檢驗
      • 22.5.2 功效與樣本量

檢驗的方法列表

檢驗 有母數的方法 (Parametric tests) 無母數的方法 (Non-parametric tests)
比較兩個平均值 (compare two means) Student's T test Wilcoxon's U test
比較多平均值 (compare more than two means Anova (analysis of variance) Kruskal—Wallis test
比較兩個變異數 (Compare two Variance) Fisher's F test Ansari-Bradley or variances Mood test
比較多個變異數 (Comparing more than two Variance) Bartlett test Fligner test

單樣本假設檢驗

方差未知的正態分布均值的單樣本檢驗

前提條件:數據為正態分布使用 t.test(),非常分布使用 Wilcoxon's U test

> x=rnorm(200)
> t.test(x)
One Sample t-test
data: x
t = -1.1695, df = 199, p-value = 0.2436
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
-0.21865305 0.05585082
sample estimates:
mean of x
-0.08140112
# 可以看一下 p 值的分布,若零假成立,p在 [0,1] 之間為均勻分布
> p <- c()
> for (i in 1:1000) {
+ x <- rnorm(200)
+ p <- append(p, t.test(x)$p.value)
+ }
> hist(p, col='light blue')

數據非正態時的情況

數據非正態時需要做轉換使其變為正態分布或使用非參數檢驗,數據為均勻分布時,會出現下面的情況。

> N <- 1000
> n <- 3
> v <- vector()
> for (i in 1:N) {
+ x <- runif(n, min=-1, max=1)
+ r <- t.test(x)$conf.int
+ v <- append(v, r[1]<0 & r[2]>0)
+ }
> sum(v)/N
[1] 0.919

# 數據正態分布時
> N <- 1000
> n <- 100
> v <- vector()
> for (i in 1:N) {
+ x <- rnorm(n, sd=1/sqrt(3))
+ r <- t.test(x)$conf.int
+ v <- append(v, r[1]<0 & r[2]>0)
+ }
> sum(v)/N
[1] 0.947

可以看到的是,均勻分布作為正態分布時其置信區間的概率不是 0.95 而是 0.92,這增大了2 型錯誤的概率,但是樣本量很大時誤差就不明顯了。

> N <- 1000
> n <- 100
> v <- vector()
> for (i in 1:N) {
+ x <- runif(n, min=-1, max=1)
+ v <- append(v, t.test(x)$p.value)
+ }
> sum(v>.05)/N
[1] 0.957

方差已知的正態分布均值的單樣本檢驗

此時使用 z 檢驗

某些研究中,根據過去的資料翻查可能方差是知道的,在這種情況下檢驗統計量 t 可以由 z 代替,臨界值也由相應的標準正態分布的臨界值代替,其中

(1)
\begin{align} z = \frac{ \bar{x} - \mu }{\sigma/sqrt{n}} \end{align}

其它的計算完全類似于方差未知時的 t 檢驗,不論是單側還是雙側。

下面例子假設總體方差為 1 ,檢驗其零假設為 0,樣本量為 100。

> x=rnorm(100)
> z=(mean(x)-0)/(1/sqrt(100))
> z
[1] 2.005832
> pnorm(z)
[1] 0.9775629

功效與樣本量

參考 power.t.test()

power.t.test(n = NULL, delta = NULL, sd = 1, sig.level = 0.05,
power = NULL,
type = c("two.sample", "one.sample", "paired"),
alternative = c("two.sided", "one.sided"),
strict = FALSE)
> power.t.test(n = 20, delta = 1)  # 已知樣本量, 求功效
Two-sample t test power calculation
n = 20
delta = 1
sd = 1
sig.level = 0.05
power = 0.8689528
alternative = two.sided
NOTE: n is number in *each* group
> power.t.test(power=0.8, delta = 1) # 已知功效, 求樣本量
Two-sample t test power calculation
n = 16.71477
delta = 1
sd = 1
sig.level = 0.05
power = 0.8
alternative = two.sided
NOTE: n is number in *each* group

方差的區間估計及檢驗{卡方檢驗}

R 中有 chisq.var.test()

在方差的置信區間估計及檢驗中,正態條件特別重要,若樣本不滿足正態性,則臨界值 p 值及置信區間都不是有效的。

> x=rnorm(100) # 檢驗x的總體的方差是否為1
> var(x)
[1] 0.9344586
> chi2=(100-1)*var(x)/1 #計算檢驗統計量
> chi2
[1] 92.5114
> qchisq(df=99,p=0.025) # 區間下側
[1] 73.36108
> qchisq(df=99,p=0.975) # 區間上側
[1] 128.422
> p=2*pchisq(q=chi2,df=99) # p值
> p
[1] 0.671611

方差齊性檢驗-F檢驗

兩個樣本的均值 t 檢驗之前,需要判斷其方差是否相同,正態樣本使用此 F 檢驗。

F分布的特點

具自由度d1; d2 的 F 分布的下側第 p 個百分位點,就是具有自由度為 d1*d1 的 F 分布上側第 p 個百分位點的倒數,即:

(2)
\begin{equation} F_{d_1, d_2, p} = 1/F_{d_1,d_2,1-p} \end{equation}

F檢驗

使用 t 檢驗之前需要此檢驗。
參考:var.test()

> x <- rnorm(50, mean = 0, sd = 2)
> y <- rnorm(30, mean = 1, sd = 1)
> var.test(x, y) # 第一種用法
F test to compare two variances
data: x and y
F = 6.1786, num df = 49, denom df = 29, p-value = 1.516e-06
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
3.104259 11.624472
sample estimates:
ratio of variances
6.178575
> var.test(lm(x ~ 1), lm(y ~ 1)) # 第二種用法. The same.
F test to compare two variances
data: lm(x ~ 1) and lm(y ~ 1)
F = 6.1786, num df = 49, denom df = 29, p-value = 1.516e-06
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
3.104259 11.624472
sample estimates:
ratio of variances
6.178575

# 手工計算

> f=var(y)/var(x)
> f
[1] 0.1618496
> qf(0.025, 49,29)
[1] 0.5315144
> qf(0.975, 49,29)
[1] 1.990354
> f d=sleep
> d
extra group
1 0.7 1
2 -1.6 1
3 -0.2 1
4 -1.2 1
5 -0.1 1
6 3.4 1
7 3.7 1
8 0.8 1
9 0.0 1
10 2.0 1
11 1.9 2
12 0.8 2
13 1.1 2
14 0.1 2
15 -0.1 2
16 4.4 2
17 5.5 2
18 1.6 2
19 4.6 2
20 3.4 2
> t.test(extra ~ group, data = sleep)
Welch Two Sample t-test
data: extra by group
t = -1.8608, df = 17.776, p-value = 0.0794
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-3.3654832 0.2054832
sample estimates:
mean in group 1 mean in group 2
0.75 2.33

# 第二種用法普通的兩個數據
> attach(d) 

# 將 d 的數據extra, group 納入名稱空間, 可以直接使用

> t.test(extra[group == 1], extra[group == 2])
Welch Two Sample t-test
data: extra[group == 1] and extra[group == 2]
t = -1.8608, df = 17.776, p-value = 0.0794
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-3.3654832 0.2054832
sample estimates:
mean of x mean of y

功效與樣本量:
參考 power.t.test type=paired
不配對的樣本量估計參考流行病部分兩個均值的樣本量
估計 epicalc 包的函 n.for.2means
功效見 epicalc 包的函 power.for.2means。

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License