- 本文改自:(徐俊曉) 統計學與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。
Post preview:
Close preview