--- title: 【R 語言與統計資料分析】Ch9:推論統計與中央極限定理 image: https://ppt.cc/fnT4xx@.png --- # 【R 語言與統計資料分析】Ch9:推論統計與中央極限定理 <div style="text-align: center;"> <img src="https://oceanic-phosphorus-8b7.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fb6ade406-0e33-4172-839b-c61968186417%2FUntitled.png?table=block&id=d7d57382-690b-4c94-9a35-5e224d8f606f&spaceId=d0d863fa-b4b0-4191-a35e-38993e9bc763&width=660&userId=&cache=v2" width="300"> <br> <span style="color: gray; font-size: 0.8em;">樣本與母體間的關係</span> </div> 讓我們回到數據分析的核心概念,我們希望透過已知的部分資訊 (樣本) 去「猜測」真實的母體狀態,而這個猜測的方法就稱為「統計推論」。 # 9.1 從估計開始 若我們今天收到一筆樣本,是學生在問卷上填寫的身高資料,而我們想透過此資料進行健康政策研究,那們要如何才能做出是當的政策判斷依據呢? 以下是美國學生的身高數據,那我們先換成公分,比較符合台灣人的直覺。 ```r library(dslabs) #載入套件中的資料集 # 如果沒有此套件,請執行 install.packages("dslabs") data(heights) # 觀看查詢前 6 筆資料 head(heights) ``` <div style="text-align: center;"> <img src="https://hackmd.io/_uploads/rJbuhE4YWg.png" width="150"> <br> <span style="color: gray; font-size: 0.8em;">heights 資料集內有性別與身高 (英吋) 資料</span> </div> ```r heights$height_cm <- heights$height * 2.54 #英吋換成公分 # 觀看查詢新版前 6 筆資料 head(heights) ``` <div style="text-align: center;"> <img src="https://hackmd.io/_uploads/Byv9hN4Y-x.png" width="200"> <br> <span style="color: gray; font-size: 0.8em;">heights 資料集內有性別與身高 (公分) 資料</span> </div> 接著,讓我們繪製此資料集的直方圖,也就是實證機率密度函數 (empirical probability density function),來看看資料的分佈狀況。 ```r hist(heights$height_cm) ``` <div style="text-align: center;"> <img src="https://hackmd.io/_uploads/S1133N4KWg.png" width="350"> <br> <span style="color: gray; font-size: 0.8em;">height (cm) 的直方圖</span> </div> 我們可以發現,身高確實符合鐘形分配,但接下來還會面對許多問題: - 我們真的可以用這組樣本代表母體嗎? - 這個母體真的是常態分佈嗎? - ... ... 在這個章節,我們會用統計學的思維以及 R 語言的實證回答這些問題。 ## 9.1.1 點估計 凡事總是要有個起點,我們首先從單點估計開始說起,若想了解一個資料的分布型態,我們當然會想要了解其他關鍵指標,比如說平均數與標準差,因為當我們找到這些指標後,就可以對母體有更清楚的描述,而針對單一指標的估計,就被稱為「**點估計**」(point estimator)。 ::: success 💡 **樣本動差** 在統計學中,「動差」(Moments)是用來描述分佈形狀的數學特徵,我們在此介紹幾個重要動差: - **平均數** (一階動差): 為對母體期望值的估計。 $$\bar{x} = \frac{1}{n} \sum_{i=1}^{n} x_i$$ - **變異數** (二階中央動差): 描述數據的離散程度,在大樣本的情況之下,分母為 $n$ 或 $n-1$ 差異不大。 $$s^2 = \frac{1}{n} \sum_{i=1}^{n} (x_i - \bar{x})^2$$ - **偏態** (Skewness,三階標準化動差): 描述分佈的左右對稱性。 $$g_1 = \frac{\frac{1}{n} \sum_{i=1}^{n} (x_i - \bar{x})^3}{\left[ \frac{1}{n} \sum_{i=1}^{n} (x_i - \bar{x})^2 \right]^{3/2}}$$ - $g_1 > 0$:右偏(右尾較長,資料集中左側)。 - $g_1 < 0$:左偏(左尾較長,資料集中右側)。 - **峰態** (Kurtosis,四階標準化動差): 描述分佈頂部的尖銳度及尾部的厚度。 $$g_2 = \frac{\frac{1}{n} \sum_{i=1}^{n} (x_i - \bar{x})^4}{\left[ \frac{1}{n} \sum_{i=1}^{n} (x_i - \bar{x})^2 \right]^2}$$ - $g_2 = 3$:常態分配(基準值)。 - $g_2 > 3$:高狹峰(Leptokurtic),尾巴比常態分配厚(極端值多)。 - $g_2 < 3$:低闊峰(Platykurtic),分佈較平緩。 接著,讓我們用 R 來計算這些指標: ``` #平均數 mean(heights$height_cm) #變異數 var(heights$height_cm) # 安裝與載入套件 # install.packages("moments") library(moments) #偏態 skewness(heights$height_cm) # 若接近 0 則代表對稱 #峰態 kurtosis(heights$height_cm) # 若接近 3 則代表符合常態分配 ``` ::: ## 9.1.2 區間估計 在了解點估計後,接下來要回答的問題就是: 點估計準嗎? 一個簡單的答案是: 「**肯定不準**」,是不太可能直接猜中母體動差的,但是我們是可以用一個區間來衡量猜測的準確度,而這就是**區間估計** (interval estimation)! 以母體均數為例,我們希望找到一條式子,滿足以下條件,而此處的上下界所包含的範圍,就是區間估計。 $$P[L \leq \mu \leq U]=95\%$$ 在理論上,我們必須先建立一個包含要估計的參數的樞軸量 (pivotal),但其抽樣分配又與未知參數無關,且我們必須知道它的抽樣分配 (不然無從算起),我們在此處就先跳過不談細節,若對其數學方法有興趣,可以參考以下連結之[網路文件](https://en.wikipedia.org/wiki/Pivotal_quantity)。 以常態分配為例,我們所計算之 95% 信賴區間為 (假設母體標準差已知): $$\left[ \bar{X} - 1.96 \frac{\sigma}{\sqrt{n}}, \quad \bar{X} + 1.96 \frac{\sigma}{\sqrt{n}} \right]$$ 若我們算出 $\mu$ 的 95% 信賴區間為 $[10,20]$,是代表若我們重複此隨機試驗 100 次,會約有 95 次所算出來的區間會確實涵蓋到母體均數,而非此次抽樣的結果涵蓋真正均數的機率為 95%,因為現實只會有「**沒涵蓋到**」與「**有涵蓋到**」兩種狀況,因此機率不是 1 就是 0。 <div style="text-align: center;"> <img src="https://hackmd.io/_uploads/BJLThNVY-l.png" width="350"> <br> <span style="color: gray; font-size: 0.8em;">信賴區間的含意 <br> 圖片來源:林惠玲、陳正倉(2004) 統計學:方法與應用</span> </div> # 9.2 弱大數法則與中央極限定理 ## 9.2.1 弱大數法則 弱大數法則描述隨樣本數 $n$ 增加,樣本估計與母體參數的差距而趨近於 0,簡單來說就是當樣本數變多時,資料會越準。 $\lim _{n\rightarrow \infty }P(|\bar{X}_{n}-\mu |>\epsilon )=0$ ```r # 探討樣本數與均數間的關係 set.seed(888888) n <- c(10,30,50,100,1000,10000,100000) #抽樣次數 average <- c() #建立空白向量 for(i in 1:length(n)){ average[i] <- mean(rpois(n[i],50)) #卜瓦松分配 lambda = 50 也就是平均數 } df <- data.frame(n = n,average = average, diff=(50-average)) print(df) ``` ## 9.2.1 中央極限定理 在現實世界中,我們基本上不太可能知道資料真實的分佈情形,那此時就無法像前述一樣簡單地計算出樞軸量 (pivotal)。但慶幸的是,當樣本數趨近無窮大時,**樣本平均數之抽樣分佈會收斂**(convergence in distribution)至**常態分佈**,因此對於母體均數而言,我們還是可以做出適當的統計推論的! $$\frac{\bar{X}_n-\mu}{\frac{\sigma}{\sqrt{n}}}\xrightarrow[n\rightarrow\infty]{d}N(0,1)$$ (我們可用樣本標準差 $s$ 來取代 $\sigma$) #### 以卡方分配為例 ```r n = c(1, 10, 100) color = c("red", "blue", "green") nSim <- 10000 for(i in 1:length(n)){ # 一次生成矩陣:列數為模擬次數,行數為樣本數 # 然後計算每一列的平均值,結果就是一個向量 meanVector <- rowMeans(matrix(rchisq(nSim * n[i], df=5), nrow = nSim)) plot(density(meanVector), col = color[i], xlim=c(0, 15), ylim=c(0, 1.3), main = "CLT on chisquare dist.(df=5)", xlab = "x-bar") par(new = TRUE) } legend(x="topright", legend=c("n=1", "n=10", "n=100"), lty = 1, col = color, lwd = 1.5) ``` <div style="text-align: center;"> <img src="https://hackmd.io/_uploads/ryk1a4EKbl.png" width="350"> <br> <span style="color: gray; font-size: 0.8em;">卡方分配的樣本平均收斂速度</span> </div> #### 以二項分配為例 ``` n = c(1, 30, 100) color = c("red", "blue", "green") nSim <- 10000 p_success <- 0.2 # 設定二項分配的成功機率 for(i in 1:length(n)){ # rbinom(n, size, prob): # 這裡 size=1 代表白努力試驗,我們抽 nSim * n[i] 個,再排成矩陣算平均 raw_data <- rbinom(nSim * n[i], size = 1, prob = p_success) meanVector <- rowMeans(matrix(raw_data, nrow = nSim)) # 繪圖設定:xlim 改為 0 到 1 之間,因為二項分配平均值(機率)範圍在此 plot(density(meanVector), col = color[i], xlim=c(0, 1), ylim=c(0, 15), main = "CLT on Binomial dist. (p=0.2)", xlab = "x-bar (Sample Proportion)") par(new = TRUE) } legend(x="topright", legend=c("n=1", "n=30", "n=100"), lty = 1, col = color, lwd = 1.5) ``` <div style="text-align: center;"> <img src="https://hackmd.io/_uploads/SJyg6VNKbx.png" width="350"> <br> <span style="color: gray; font-size: 0.8em;">二項分配的樣本平均收斂速度較慢</span> </div> #### 以對數常態分配為例 對數常態分配,為隨機變數 $X$ 的「自然對數值」$\ln(X)$ 服從常態分配。也就是,$\ln(X) \sim N(\mu, \sigma^2)$。 ``` n_list = c(1, 10, 100, 500, 10000) color = c("red", "blue", "green", "purple","orange") nSim <- 10000 for(i in 1:length(n_list)){ # 對數常態分配 rlnorm meanVector <- rowMeans(matrix(rlnorm(nSim * n_list[i], meanlog=0, sdlog=2), nrow = nSim)) plot(density(meanVector), col = color[i], main = "CLT on Log-normal (Very Slow Convergence)", xlab = 'xbar', xlim = c(0, 50), ylim = c(0, 0.5)) par(new = TRUE) } legend("topright", legend=paste("n=", n_list), col=color, lty=1) ``` <div style="text-align: center;"> <img src="https://hackmd.io/_uploads/ByQIGj8_bx.png" width="350"> <br> <span style="color: gray; font-size: 0.8em;">對數常態分配的樣本平均收斂速度極緩慢且會出現右長尾</span> </div> \ 由這些案例可知,中央極限定理雖然理論上成立,但是根據不同的分配會有不同的收斂速度。因此,我們需要對資料有更深的認識才能做出正確的統計推論。 (這也是為何我們總是要先繪製資料的直方圖) # 9.3 假設檢定 我們在做統計推論時,重點就是為了「回答問題」,那回答問題的一種方式就是**假設檢定**。 透過假設檢定,我們可以試著回答這些問題 - 建中男同學都不高,只有 173 公分,真的假的? - 哪一個手機軟體介面會讓用戶有更好的付費意願? - 在 50 公尺自由式比賽中,被分到 5~8 水道 的選手成績普遍比 1~4 水道的選手好 ? ## 9.3.1 虛無假設與對立假設 在假設檢定中,我們會建立兩個互斥的假設,分別為: - **虛無假設** (null hypothesis):這是我們要檢定的假設,一般以 $H_0$ 表示。 簡單來說,我想確認母體平均身高是否可能為 173 公分,那此時的 $H_0$ 就設定為: $H_0 : \mu = 173$ - **對立假設** (alternative hypothesis):這是與虛無假設相悖的假設,以 $H_1$ 或 $H_A$ 表示。 承上例:$H_1: \mu > 173$ 若透過檢定認為**虛無假設不成立**,則我們會反過頭來**接受對立假設**。 透過檢定,我們會獲得下列兩個結果: - 拒絕 $H_0$ 並接受 $H_1$。 - 無法拒絕 $H_0$。 ::: info 💡 **假設檢定的基本想法** 若我們先**假定虛無假設為真**,我們抽取出來的樣本就不應該偏離這個值太多,**若出現極端值**的情形,則我們有**信心說我們拒絕虛無假設**,而若沒有出現這種極端的情形,則我們只能說我們**無法拒絕虛無假設**。 ::: ## 9.3.2 顯著水準與拒絕域 #### 顯著水準 那麼出現這種極端值的機率是多少呢?一般來說,我們會定義**顯著水準** (significance level) 為 $\alpha$ ,並令 $\alpha=0.01, 0.05\ or\ 0.1$。顯著水準也就是**當** $H_0$ **成立時**,**發生某極端事件的機率**。不同的顯著水準也會影響檢定被拒絕與否。 而要計算機率,那我們就得建構出我們有興趣的統計量的「機率分配」,此部分就會與「**虛無假設**」有密切關係,因為我們進行假設檢定時,會先**假定虛無假設為真**,此時所算出來的機率就是使用**虛無分配** (null distribution) 去做計算。 #### 拒絕域 所謂拒絕域 (rejection region, RR) 是在虛無假設成立之下,並給定機率 $\alpha$,所圍出來的範圍,而這個範圍會有一個臨界值 (critical value),當我們**抽出來的估計實現值**超過臨界值而落在拒絕域時,我們就可以有信心地去拒絕虛無假設。 >注意:臨界值是經由虛無分配所堆導出之值,相對於抽出的樣本資料 (ex post),是一個「事前 (ex ante)」的概念 我們可以回到身高的例子,$H_0 : \mu = 173$ 且 $H_1: \mu > 173$。那抽出來的樣本平均到底要要超過多少,我們才會拒絕虛無假設呢?是 175、180、還是 200 公分呢? 所以我們的目的就是找出一個臨界值 $c$ 使得下式成立: $P(\bar{X} \geq c |\mu=173)=\alpha$ 也就是說,當我們所抽取出的**樣本平均實現值 $\bar{x} \geq c$** 時,就是在 $H_0$ 為真的情況之下,真的出現了極端值,那我們就可以**在顯著水準 $\alpha$ 之下拒絕虛無假設**。 <div style="text-align: center;"> <img src="https://hackmd.io/_uploads/rJ5W6NNtZl.png" width="400"> <br> <span style="color: gray; font-size: 0.8em;">虛無分配的實際呈現</span> </div> ## 9.3.3 假設檢定的步驟 在假設檢定中,我們對**母體**分配的「**參數**」是有興趣的,如常態分配中的 $\mu$ ,或是 Bernoulli 分配中的 $p$。首先,我們其實不知道母體的真實分配,所獲得的資料又是抽出的**樣本**,那這樣子獲得的樣本資料有辦法去推論母體嗎?我們可以透過一些**統計理論**,如中央極限定理等等,協助我們進行參數的檢定。接著,我們來介紹假設檢定的基本步驟,我們以 $\theta$ 來表示想要估計的參數, $\theta^*$ 表示我們在**虛無假設**下該參數的值。 1. 設定虛無假設 $H_0$ 以及對立假設 $H_1$ 1. $H_0: \theta= \theta^*$ 2. $H_1$ 根據我們所獲得資訊的不同或是有特別的檢定目的,可以分為**雙尾檢定**以及**單尾檢定:** 1. 雙尾檢定(Two-Tailed Test):$\theta \neq \theta^*$ 2. 右尾檢定(Right-Tailed Test):$\theta > \theta^*$ 3. 左尾檢定(Left-Tailed Test):$\theta < \theta^*$ <div style="text-align: center;"> <img src="https://hackmd.io/_uploads/H1iz6EVF-l.png" width="350"> <br> <span style="color: gray; font-size: 0.8em;">圖片擷取自:D.Bang,用人話說明什麼是假設檢定</span> </div> 2. 建立樞紐統計量(pivotal quantity) $\varphi(\theta,X_i)$,我們透過找出 $\varphi(\bullet)$的抽樣分配來進行統計推論。 :::success $\varphi(\theta,X_i)$ 中沒有任何未知參數,並且它的分配與 $\theta$ 無關。 若$\varphi(\bullet)$的抽樣分配未知,我們可以透過**中央極限定理**以 $N(0,1)$ 來近似。 中央極限定理:$\frac{\bar{X_n}-\mu}{\sqrt{Var(\bar{X_n})}}\xrightarrow[]{d}N(0,1)$ ::: 3. 選擇顯著水準 $\alpha$ ,傳統上我們會設定 $\alpha=0.01,0.05,0.1$。 4. 透過$\varphi(\bullet)$來找出對應顯著水準 $\alpha$ 的**臨界值 $\varphi^*$**,並以此建構**拒絕域**。(不同檢定各自的拒絕域的位置可以對照上圖分配之著色處) 5. 檢視實際抽出的資料 $\varphi_0=\varphi(x_1,x_2,...,x_n,\theta_0)$,是否落在**拒絕域**中。當我們的**統計量掉在拒絕域**中的話,我們就可以**拒絕虛無假設**。 #### 假設檢定與信賴區間 假設檢定與信賴區間為一體之兩面,在 null distribution 成立之下,我們也可以建立包含母體參數之 $(1-\alpha)\%$信賴區間,如果檢定統計量落在這個區間之外,則可拒絕 $H_0$。 :::info 📚 **民意調查的案例** 我們隨機調查 1000 名受訪者,詢問他們喜不喜歡吃香菜,是的話紀錄為$1$,否的話就紀錄為$0$。因此可將本題受訪者偏好的樣本視為從 $Bernoulli(p)$ 中抽出的 $i.i.d$ 隨機變數。 $i.e$ $\left \{ X_i \right \}_{i=1}^{1000} \sim^{iid}Bernoulli(p)$,其中 $X_i={\begin{cases}1,\ 愛吃香菜 \\0,\ 不愛吃香菜 \end{cases}},\ i=1,2,...,1000$ 我們發現有 570 位受訪者覺得香菜很讚,有點介在中間啊,故我們想要知道 $p$ 是否為 $0.5$,我們設定顯著水準為 $0.05$。 ::: Solution: 1. 我們首先建立 $H_0$ 與 $H_1$。 $H_0: p = 0.5$ $H_1: p \neq 0.5$ 2. 建立樞紐量 pivot,我們預估計的參數是而我們是用 $\bar{X}$ 去估計 $p$,但由於我們不知道 $\bar{X}$ 的分配,故我們透過**中央極限定理**去幫助我們建立樞紐量。 $\frac{\bar{X_n}-E(\bar{X_n})}{\sqrt{Var(\bar{X_n})}} = \frac{\bar{X_n}- p}{\sqrt{\frac{p(1-p)}{n}}}\xrightarrow[]{d}N(0,1)$ 3. 建立 $\alpha=0.05$ 的**拒絕域**。由於 $N(0,1)$ 是對稱的,在雙尾檢定之下,我們只要找到 $1-\frac{\alpha}{2}$ 的 quantile 即可,我們可以透過 R 語言,也可以透過傳統的查表來找到這個數值 在 R 中,我們可使用寫好的套件直接進行假設檢定: ```r # 設定數據 n <- 1000 # 樣本總數 x <- 570 # 覺得很讚的人數 p_null <- 0.5 # 虛無假設的比例 # 方法一:精確二項檢定 (Exact Binomial Test) res_exact <- binom.test(x, n, p = p_null, alternative = "two.sided") print(res_exact) # 方法二:比例檢定 (Proportion Test, 使用常態近似) res_prop <- prop.test(x, n, p = p_null, alternative = "two.sided", correct = TRUE) print(res_prop) ``` <div style="text-align: center;"> <img src="https://hackmd.io/_uploads/rJgNaVVFbe.png" width="300"> <br> <span style="color: gray; font-size: 0.8em;">Exact binomial test 檢定報表</span> </div> ## 9.3.4 檢定的 p 值 在 $H_0$ 假設為真的情形之下,比我們所觀察到之觀測值更極端之機率。 因此,若 p-value < $\alpha$,我們就可以拒絕 $H_0$。也就是在虛無假設成立的情況之下,我們竟然觀察到這麼低機率的事件,因為太誇張了,所以我們拒絕無假設。 $\bullet$ 拒絕 $H_0$:p-value $\leq \alpha$ $\bullet$ 無法拒絕 $H_0$:p-value $\geq \alpha$ 讓我們回到前述民調的例子,我們可以透過下列式子來計算 p-value: $p\ value=P(|\bar{X_n}| \geq 0.57|p=0.5)=P(|\frac{\bar{X_n}- 0.5}{\sqrt{\frac{0.5(1-0.5)}{1000}}}| \geq \frac{0.57 - 0.5}{\sqrt{\frac{0.5(1-0.5)}{1000}}})=\\P(|Z| \geq 4.43)=2 \times P(Z \geq 4.43)=9.423 \times 10^{-6}$ (注:後面有 $\times 2$ 是來自於雙尾檢定拆絕對值,若是單尾檢定就不用 $\times 2$ ) 我們可以看出 p-value 超級小,因此我們也就**有信心拒絕虛無假設**。 ## 9.3.5 檢定也會犯錯 - 型一誤差與型二誤差 我們在搜集資料,然後進行統計資料,是否真有可能就那麼衰,真的抽樣抽到了極端值,導致我們錯誤拒絕了 $H_0$ 呢?是否也有可能錯誤地無法拒絕 $H_0$ ,但其實 $H_1$ 才是對的呢? 在此,我們以下表表示上面的情形: | | 無法拒絕 $H_0$ | 拒絕 $H_0$ | | --- | --- | --- | | $H_0$ 是正確的 | 決策無誤 | $Type\ I\ error$ | | $H_0$ 是錯誤的 | $Type\ II\ error$ | 決策無誤 | - 型一誤差( $Type\ I\ error$ ):錯誤拒絕 $H_0$,錯殺無辜。 - 型二誤差( $Type\ II\ error$ ):錯誤接受(無法拒絕) $H_0$,錯放壞人。 在檢定中我們會希望**控制型一誤差與型二誤差發生的機率**,當然是希望越小越好,只可惜**魚與熊掌不可兼得**,若樣本數 $n$ 不變的情況之下,兩者存在 trade-off 的關係。 - 犯下型一誤差的機率:$\alpha = P(型一誤差)=P(拒絕H_0|H_0為真)$ 這個 $\alpha$ 在簡單假設的情況之下,**就是我們的顯著水準**, $\alpha$ 也可以說是我們可容忍犯型一誤差的最大機率。 > 是否有機會「洗」p 值 ? - 犯下型二誤差的機率:$\beta= P(型二誤差)=P(無法拒絕H_0|H_0為假)$ 而因為 $H_0$ 是有問題的,我們可以知道 $\beta$ 的機率來自於母體**未知**參數的真值,在不同的 $\theta$ 的設定之下也會有不同的機率值,故 **$\beta$ 是 $\theta$ 的函數 ( $\beta=\beta(\theta)$ )。** :::success 💡 **檢定力函數** (Power Function) 我們也因此可以延伸出一個觀念 ——「**檢定力函數**」,定義檢定力函數如下: $\pi(m)=P(拒絕H_0|\theta=m)=1-\beta(m)$ ← 想想看,why? 也就是說,若 $H_1$ 為真,**檢定力就是不犯型二誤差的機率**。 ::: <div style="text-align: center;"> <img src="https://hackmd.io/_uploads/rJ5W6NNtZl.png" width="400"> <br> <span style="color: gray; font-size: 0.8em;">型一誤與型二誤差</span> </div> # 9.4 檢定不顯著怎麼辦 檢定不顯著可能只是代表目前的數據不足以佐證我們的猜想,因此我們還無法推翻虛無假設。另一方面,也要去思考是否研究設計有問題? 或是我的對立假設真的是錯的? ## 9.4.1 如何降低 p 值 1. **增加樣本數** ($n$) 我們以中央極限定理為例,樣本數越大,標準誤(Standard Error)就越小,此時就有機會在雷同的情境下拒絕虛無假設。 $$CI = \bar{X} \pm Z_{\alpha/2} \cdot \frac{\sigma}{\sqrt{n}}$$ 但要小心「過度顯著」,當 $n$ 極大時,微不足道的差異也會顯著。 2. **減少測量誤差與雜訊** (Noise Reduction) 如果你無法增加樣本,那就設法讓現有的數據更「精準」。實驗控制:在更嚴格受控的環境下進行實驗,減少環境干擾。精進工具:使用精確度更高的儀器。同樣地,如果你知道某些因素(如年齡、性別)會影響結果,將它們納入模型作為控制變數,可以移除「背景雜訊」,從而讓主效應的 P 值下降。 ## 9.4.2 請不要「操弄」p 值 1. **操弄統計樣本**: 研究者在收集數據的過程中,每收幾筆就跑一次檢定:如果 $P > 0.05$,就繼續收數據。一旦 $P < 0.05$,就立刻停止實驗並宣稱結果顯著。 這會讓第一型錯誤 ($\alpha$) 遠高於預設的 0.05,因為你給了數據多次「偶然達標」的機會,雷同於我們之前說的「洗」p 值。 2. **選擇性報告** (Selective Reporting / Cherry Picking): 一個實驗可能測量了 20 種不同的指標(例如:血壓、心跳、睡眠、食慾等)。如果只有「食慾」達到了 $P < 0.05$,研究者就只報告食慾的結果,並假裝沒測量過其他 19 項。後果:根據機率,同時測量 20 項指標時,純粹靠運氣出現一項顯著結果的機率高達 $64\%$。 3. **刪除極端值** (Outlier Manipulation): 人為地定義哪些數據是「異常值」,但極端值不一定是異常值。研究者會嘗試刪除某些數據點,看看 $P$ 值會不會降下來。如果刪除後變顯著,就找個藉口(如「儀器誤差」)把該點踢除。 4. **變更分組方式** (Data Binning): 將連續變數人為地切割成類別變數。例如:嘗試將年齡切成「20-30, 31-40...」,如果沒效,就改切成「25歲以下, 25歲以上」,直到跑出顯著結果為止。 # 參考資料 1. 陳旭昇(2024),資料分析的統計學基礎:使用R語言,東華書局 2. 林建甫 Jeff Lin(2020),[R 資料科學與統計](https://bookdown.org/jefflinmd38/r4biost) 3. Gareth James, Daniela Witten, Trevor Hastie, Robert Tibshirani. (2017). An Introduction to Statistical Learning: With Applications in R. New York: Springer. 4. 陳基國(2024). 基礎統計與R語言. 台北:五南圖書出版股份有限公司