• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

R 卡方檢定:適合度檢定、獨立性檢定教學與範例

使用 R 的 chisq.test R 卡方檢定函數,進行適合度檢定與獨立性檢定。


R 卡方檢定可以用於適合度檢定(goodness of fit test)與獨立性檢定(test of independence),以下是使用的方法與範例。

適合度檢定

假設我們想要檢驗骰子是否公正,也就是說骰子出現 1 到 6 的機率是否都是 1/6,就可以使用卡方檢定。這裡我們使用模擬的資料來示範卡方適合度檢定的操作方式。

首先以模擬的方式,產生擲骰子的資料:

# 模擬擲骰子
set.seed(5)
x <- factor(sample.int(6, size = 500, replace = TRUE))

畫出長條圖,檢視一下產生的資料:

# 繪製長條圖
ggplot(data.frame(x=x), aes(x)) + geom_bar()
長條圖

接著使用 table 計算各點數出現次數:

# 計算各點數出現次數
x.table <- table(x)
x.table
x
 1  2  3  4  5  6 
87 87 93 60 85 88

使用 chisq.test 進行卡方檢定:

# 檢定出現的機率是否相同
chisq.test(x.table)
        Chi-squared test for given probabilities

data:  x.table
X-squared = 8.272, df = 5, p-value = 0.1419

呼叫 chisq.test 若不指定機率值,預設就是檢定每個點數的出現機率是否都相同,我們也可以用 p 參數指定每個值的機率值,也就是說上面這個指令就等於以下這行指令:

# 指定機率值
chisq.test(x.table, p = c(1/6, 1/6, 1/6, 1/6, 1/6, 1/6))
        Chi-squared test for given probabilities

data:  x.table
X-squared = 8.272, df = 5, p-value = 0.1419

這個卡方檢定所得到 p-value 為 0.1419,大於 0.05,不拒絕虛無假設(null hypothesis),所以沒有顯著證據顯示這個骰子是不公正的。

如果想要檢定的機率值不是每一個都相同,就自己更改一下 p 參數的機率值即可,例如若要檢定 A、B、C 三類型的比例是不是 1:2:1,就可以這樣寫:

# A、B、C 三類型的出現次數
y <- c(93, 156, 87)

# 檢定比例是否為 1:2:1
chisq.test(y, p = c(1/4, 1/2, 1/4))
        Chi-squared test for given probabilities

data:  y
X-squared = 1.9286, df = 2, p-value = 0.3813

獨立性檢定

卡方檢定也可以用在兩個變數的獨立性檢定,觀察兩個變數是否有關聯。

以下我們將使用 MASS 套件中的 survey 資料集,檢定性別與吸菸習慣之間的關係。首先載入 MASS 套件;

# 載入 MASS 套件
library(MASS)

取出性別與吸菸習慣的欄位,並且移除含有缺失值的資料:

# 移除含有 NA 的資料
survey.clean<- na.omit(subset(survey, select = c(Smoke, Sex)))

# 查看資料
head(survey.clean)
  Smoke    Sex
1 Never Female
2 Regul   Male
3 Occas   Male
4 Never   Male
5 Never   Male
6 Never Female

這個資料中的 Sex 就是性別,而 Smoke 則是吸菸習慣,而吸菸習慣有四種,分別是不吸菸(Never)、偶爾(Occas)、時常(Regul)與重度(Heavy)。

畫出性別與吸菸習慣的統計圖:

# 繪製長條圖
ggplot(survey.clean, aes(x = Smoke, fill = Sex)) + geom_bar(position = "dodge")

長條圖

建立吸菸與性別的列聯表:

# 建立吸菸與性別的列聯表
smoke.table <- table(survey.clean$Smoke, survey.clean$Sex)
smoke.table
        Female Male
  Heavy      5    6
  Never     99   89
  Occas      9   10
  Regul      5   12

使用 chisq.test 進行卡方檢定:

# 檢定吸菸與性別是否相關
chisq.test(smoke.table)
        Pearson's Chi-squared test

data:  smoke.table
X-squared = 3.5536, df = 3, p-value = 0.3139

經過卡方檢定所得到的 p-value 為 0.3139,大於 0.05,不拒絕虛無假設(null hypothesis),表示沒有證據顯示性別與吸菸習慣之間有相關。

分類:R

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例
  • C 語言使用 OpenSSL 實作橢圓曲線 ECDH 金鑰交換教學與範例
  • Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例
  • C 語言使用 OpenSSL 實作 PBKDF2 教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide