• 文章總列表
  • 統計分析
    • R SAS All
      R

      [R]散佈圖與相…

      2019-12-31

      R

      [R]Logis…

      2019-10-31

      R

      [SAS][R]…

      2019-09-27

      R

      [R]Chi-s…

      2019-09-19

      SAS

      [SAS] Ma…

      2026-09-08

      SAS

      [SAS] Ma…

      2026-01-21

      SAS

      [SAS]傾向分…

      2020-10-28

      SAS

      [SAS]Log…

      2020-06-10

      統計分析

      [SAS] Ma…

      2026-09-08

      統計分析

      [SAS] Ma…

      2026-01-21

      統計分析

      什麼是meta-…

      2024-11-05

      統計分析

      Test-ret…

      2024-06-07

  • SAS
    • SAS

      [SAS] Ma…

      2026-09-08

      SAS

      [SAS] Ma…

      2026-01-21

      SAS

      [SAS]傾向分…

      2020-10-28

      SAS

      [SAS]Log…

      2020-06-10

      SAS

      [SAS]迴歸分…

      2020-02-28

  • R
    • R

      [R]散佈圖與相…

      2019-12-31

      R

      [R]Logis…

      2019-10-31

      R

      [SAS][R]…

      2019-09-27

      R

      [R]Chi-s…

      2019-09-19

      R

      [SAS][R]…

      2019-07-08

  • 機器學習
    • 機器學習

      Unsuperv…

      2021-07-22

      機器學習

      Unsuperv…

      2021-07-12

      機器學習

      Unsuperv…

      2021-05-20

      機器學習

      Unsuperv…

      2021-05-12

      機器學習

      Matrix F…

      2021-04-30

  • 閱讀筆記
    • 閱讀筆記

      [閱讀心得 #2…

      2025-02-05

      閱讀筆記

      [閱讀心得#20…

      2024-10-25

      閱讀筆記

      [閱讀心得#19…

      2024-08-16

      閱讀筆記

      [閱讀心得#18…

      2024-05-10

      閱讀筆記

      [閱讀心得#17…

      2022-01-22

Wenwu's blog
wenwu's blog
  • 請我喝珍奶

Popular Posts

[R]散佈圖...

2019-12-31

[SAS]L...

2020-06-10

[SAS][...

2019-07-08

[R]Log...

2019-10-31

[SAS] ...

2020-01-22

[SAS]線...

2020-02-26

[SAS]存...

2019-12-18

[SAS]迴...

2020-02-28
SAS

[SAS]存活分析(2) COX regression model

by wenwu 2019-12-18

[SAS]存活分析(2) COX regression model

使用存活分析時,除了想要了解不同組別之間是否有顯著差異外,我們也想要了解不同的自變項(X)對存活的影響。正常情形下,我們研究樣本的病人會有不同的特徵,像是性別 、年齡、是否接受特定手術、本身的健康數據等等,我們可以使用 Cox model 知道這些變項對存活函數的影響是什麼。

本篇要介紹的就是Cox proportional hazard model ( Cox比例風險模式 )。在 Cox model中,自變項(X)可以超過兩個以上,並且不管是類別變項或是連續變項都可以。藉著Cox model,我們可以知道各變項的風險,並且調整這些潛在的解釋變數之後,比較各種治療之間的存活時間或存活機率。


example for SAS

和上一篇一樣在我們的研究範圍中追蹤20個病人 ,因為我們想使用Cox model來知道不同類別的自變項對存活函數的影響是甚麼,所以這邊加上了兩個新的變數,第一個是連續資料 weight ,第二個是類別資料 :年齡的分類 age_group ,下面是SAS code 可以直接使用

Data data_cox;
input id time status sex$ weight age_group$ @@;
datalines;
1 121.98680 1 M 58.6 40–49 2 66.33585 0 F 62.4 50–64 3 101.31992 1 M 76.5 40–49 4 120.96599 1 F 56.8 65up 5 30.89584 1 M 66.3 50–64 6 88.88542 0 M 62.7 50–64 7 114.43314 0 F 59.5 65up 8 76.36350 0 M 68.9 50–64 9 139.02362 0 F 74.5 40–49 10 42.17000 0 F 67.5 65up 11 111.80827 1 M 64.1 50–64 12 122.19009 1 F 66.8 40–49 13 80.05458 1 M 81.2 65up 14 107.82935 0 M 64.4 50–64 15 81.77838 0 F 69.4 50–64 16 85.48578 1 M 75.8 65up 17 93.72746 1 F 59.1 50–64 18 69.38994 0 M 63.5 40–49 19 53.35931 0 F 71.5 50–64 20 87.06297 1 M 65.8 40–49
;

單變項的Cox model

我們想要知道每個變項的Cox model,首先使用weight
weight是連續的資料,給定data之後再設定model 
因為是單變項的cox model ,這邊只想要知道weight對存活函數的影響
所以等號前面的第一項先放time,也就是我們的追蹤時間,乘上status,也就是我們有興趣的event ,time*status(0)這兩個組合其實就是我們的依變項(Y),等號後面放上我們的自變項(X),也就是weight

proc phreg data=data_cox; /*連續*/
model time*status(0)=weight/RISKLIMITS;run;

跑完之後就可以看到weight的Hazard ratio 和 95% HR CI 以及 p-value
p-value=0.5171 >0.05 ,表示沒有顯著影響的風險因子
(若p-value<0.05 ,表示有顯著影響並且每增加一公斤死亡風險增加1.031倍,注意!這邊並沒有顯著影響,只是舉例顯著時如何解釋風險函數)


class 類別資料

再來是類別資料 age_group,需要使用class 讓SAS知道他是類別,我們也需要設定一個參考組(param=ref ref=’40–49′),這邊的參考組是40-49歲的病人

proc phreg data=data_cox;
class age_group(param=ref ref=’40–49') ;
model time*status(0)=age_group/RISKLIMITS;run;

因為我們設定了參考組,在class level information 也可以看到 design variables : 40–49 的design variables都是0 ,表示參考組

跑完之後就可以看到weight的Hazard ratio 和 95% HR CI 以及 p-value
p-value >0.05 ,表示沒有顯著影響的風險因子
(若兩個p-value都小於0.05呢 ? 表示有顯著影響
年齡50-64歲的病人的死亡風險是參考組(40-49歲的病人)的2.716倍
年齡65歲以上的病人的死亡風險是參考組(40–49歲的病人)的2.856倍
注意!這邊並沒有顯著影響,只是舉例顯著時如何解釋風險函數)


class SEX

最後一個附上性別的cox model :

proc phreg data=data_cox;
class SEX(param=ref ref=’F’) ;
model time*status(0)=SEX/RISKLIMITS;run;

同樣,p-value = 0.0662 >0.05 ,表示沒有顯著差異


多變項的Cox model

接下來就是多變項的Cox model ,我們不只想要知道單變項對於存活函數的影響,也想知道多個自變項同時對於存活函數的影響。下面是程式的範例

在依變項(Y)的地方(model 等號的右邊)依舊是 time*status(0)
現在的自變項(X)不只是一個了,分別是SEX weight age_group 
若自變項是類別的話,記得加上class 並附上參考組讓SAS判讀
plots(overlay)=survival 則是會畫上經過調整後的KM plot

proc phreg data=data_cox plots(overlay)=survival;
class SEX(param=ref ref=’F’) age_group(param=ref ref=’40–49');
model time*status(0)=SEX weight age_group/RISKLIMITS;run;

結果如下,有沒有發現數字和剛剛單變項不同呢?
可以看到SEX 的 p-value <0.05 ,表示有顯著影響,男性病人的死亡風險是女性的7.971倍。

因為Cox 可以同時校正其他干擾因子,所以畫出來的KM plot 就是調整後的KM plot


KM survival curve

接著,如果想要和上一篇一樣比較兩組的存活率,這邊也有指令可以將KM 存活曲線分成兩組。baseline survival=s /diradj group=SEX;

proc phreg data=data_cox plots(overlay)=survival;
class age_group(param=ref ref=’40–49') SEX(param=ref ref=’F’);
model time*status(0)=age_group weight SEX /RISKLIMITS;
baseline survival=s /diradj group=SEX;
run;

我們將研究的病人依照性別分組,可以看到Hazard Ratio 跟上面是一樣的,加了baseline survival=s /diradj group=SEX; 可以將KM survival plot 分成兩組

如下圖,紅色是男性的KM 存活曲線,藍色是女性的KM存活曲線,都是經過Cox 之後,調整後的KM plot。有發現跟調整前的KM plot不一樣嗎? 可以看看上一篇文章[SAS]存活分析(1) KM存活曲線

經過調整後的KM plot

如何知道這兩組有沒有顯著差異呢? 可以看到Testing Global Null Hypothesis 的likelihood ratio p-value=0.0637>0.05 ,表示這兩組經過COX調整之後並沒有顯著差異。


存活分析最常使用到的 KM plot 和 Cox model 都在這兩篇講完啦!
接下來想介紹 : 整體存活率 vs 無病存活率

2019-12-18 6 comments
2 FacebookTwitterPinterestEmail
SAS

[SAS]存活分析(1) KM存活曲線 Kaplan-Meier Method

by wenwu 2019-12-13

[SAS]存活分析(1) KM存活曲線 Kaplan-Meier Method

在醫學上,若我們想要了解某疾病的死亡率以及存活率,可以使用存活分析。 通常我們會設定一個起始時間,像是確診某疾病的時間或是接受手術的時間點,並且觀察特定事件(event)(死亡或疾病復發),進一步計算疾病的存活率。

存活分析的資料特色

  1. 依變項(Y)同時為連續且具有類別的性質
  2. 設限資料

在一般我們使用的分析中,資料不是連續資料就是類別資料,但是存活分析所記錄的資料同時具有這兩種特性。在依變項(Y)中,不只需要紀錄病人的觀察時間,並且需要紀錄在研究結束前,病人的生存與否。

比方說我們研究的時間為今年的一月到十月,A病人從2月確診得了乳癌,8月份時死亡,表示A病人最終死亡(event),且存活6個月。
B病人3月確診,到結束研究時還活著,代表event沒有發生,我們知道這位病人至少存活了7個月,同時這位病人也是設限資料。

什麼是設限資料呢?
在收集資料的過程中,時常發生追蹤不到的情形(轉院,換了電話),或是病人因其他原因(車禍)死亡,我們不想讓這些情況影響到研究結果,所以當1.研究結束時,病人並沒有發生特定事件(event) 2.在研究過程中病人失聯或是被剃除了 我們就把這種情況是為設限(censor )

除了B病人是設限資料之外,假設C病人在3月時確診,5月時C病人轉院\失聯,那C病人也同樣是設限資料


Kaplan-Meier 存活曲線

KM 存活曲線可以看見每個時間的存活率,並且為遞減的函數
要如何繪製KM survival plot 呢? 我們使用SAS 來繪製

example for SAS

這邊先提供SAS code ,基本上給好資料 、追蹤時間 還有是否死亡就行了
STRATA 可以選擇要不要,如果沒有寫的畫會跑出全部的存活率,下面會示範兩種情形!

PROC LIFETEST DATA=survival 
METHOD=KM PLOTS=(S); 
TIME months*dead(0); 
STRATA group; 
RUN;

資料如下,有20位病人追蹤的月份,死亡與否(dead=1為死亡),性別

Data data_survival;
input id time status sex$ @@;
datalines;
1 121.98680 1 M 2 66.33585 0 F 3 101.31992 1 M 4 120.96599 1 F
5 30.89584 1 M 6 88.88542 0 M 7 114.43314 0 F 8 76.36350 0 M
9 139.02362 0 F 10 42.17000 0 F 11 111.80827 1 M 12 122.19009 1 F
13 80.05458 1 M 14 107.82935 0 M 15 81.77838 0 F 16 85.48578 1 M
17 93.72746 1 F 18 69.38994 0 M 19 53.35931 0 F 20 87.06297 1 M
;
proc lifetest data=data_survival
plot=survival(test nocensor) ;
time time*status(0); run;

首先會出現左邊的表格,時間是依照病人離開研究或是發生事件(event 死亡)的時間。當時間為零時,我們的存活率是1

第一位存活的月份為30.896 ,旁邊計算了當時的存活率 ( 計算方法1.0*19/20 = 0.95 ) 
第二到六位的病人並沒有發生事件(死亡),所以並不影響存活率,可以看到時間的旁邊有 * 示為設限資料。

第七位病人到80.055個月的時候發生事件,存活率0.8821
(0.8821=0.95 * 13/14 
 0.95 為 之前時間點的存活率 ,13/14 為在剩下的14 人中 一人發生事件 所以剩13人存活)

以此類推~~~

上述為對時間(月)描述的統計值,輸出四分位數估計值,列有25% 、50% 、75%百分位數。25%的人存活低於87.063個月,半數存活時間為111.808,75%的人存活低於121.987個月,平均存活時間為104.297個月

接下來我們就會看到Kaplan-Meier 存活曲線,其實也就是上面的表格中算出來的存活率畫的

分組 STRATA

通常在使用存活分析時,我們會想要比較兩組的存活率,像是接受A治療跟接受B治療的存活率的差別。同時,我們也會想知道A治療跟B治療的差異是否顯著,這時候就需要用log-tank test

下面示範的是性別的分組,我們想知道男女的存活率是否有差別

proc lifetest data=data_survival
plot=survival(test nocensor) ;
time time*status(0); STRATA SEX; run;

SAS 的output 會如同前面一樣,印出兩組的survival table ,這裡就不再重複解釋了
下圖可以看出男性和女性的存活曲線,看得出來女性(紅色的線)的存活比較差,但是跟男性的存活有顯著差異嗎?
Log-Rank test 的 p-value 為0.0469 <0.05 ,表示男女的存活有顯著的差異

好啦! 存活分析是不是沒有想像中難呢? 
下一篇介紹 Cox proportional hazard model 

2019-12-13 2 comments
0 FacebookTwitterPinterestEmail
R

[R]Logistic Regression 羅吉斯迴歸

by wenwu 2019-10-31

[R]Logistic Regression 羅吉斯迴歸

讓你一次就搞懂 R羅吉斯迴歸的output!

當我們遇到依變項(Y)是二元的類別變項時,我們可以使用羅吉斯迴歸(Logistic regression)
羅吉斯迴歸是甚麼呢? 羅吉斯迴歸(英語:Logistic regression,又譯作對數機率迴歸、羅吉斯迴歸)是一種對數機率模型是離散模型之一,屬於多重變數分析。


Logistic regression(羅吉斯迴歸) vs Linear regression(線性迴歸)

如果你有學過這兩個的話,就會發現羅吉斯迴歸和線性迴歸的很像,他們都要找到一條線,但是意義上完全不同。
羅吉斯迴歸主要是找到一條線,讓資料可以分成兩類(分類);而線性迴歸主要是找到一條線,使我們的每一點資料都盡量靠近這條線(誤差小)。羅吉斯迴歸主要是分類,而線性迴歸主要是預測。

線性迴歸的依變項(Y)通常為連續型變數,且可以超過 (0,1)
羅吉斯迴歸的依變項(Y)主要為二元的類別變項(亦即是或否,0或1)

而羅吉斯迴歸的自變項(X),可以是類別變數,也可以是連續變數。
羅吉斯迴歸中,自變數(X)對依變數(Y)的影響是以指數的方式做變動,因此不需要常態分配的假設


勝算比的計算

勝算比基本上就是事件成功與失敗的比值,我們使用下圖來解釋

實驗組成功的機率= A/N1,失敗的機率= B/N1
實驗組的勝算為 (A/N1)/(B/N1) = A/B = 5/19

控制組成功的機率= C/N2,失敗的機率= D/N2
控制組的勝算為 (C/N2)/(D/N2) = C/D = 3/24

勝算比就是兩個勝算的相除,勝算比=(A/B)/(C/D) = A*D/B*C = 2.11
表示實驗組相對控制組,成功的勝算比=2.11
表示實驗組成功的勝算(非機率)是控制組的2.11倍


example for R

接下來我們使用這組糖尿病的資料
總共有768位病人的資料,每一項變數的意思如下:

1.懷孕次數
2.口服葡萄糖耐量測試中2小時的血漿葡萄糖濃度
3.舒張壓(mm Hg)
4.三頭肌皮膚褶皺厚度(毫米)
5. 2小時血清胰島素(mu U / ml)
6.體重指數(體重(千克)/(身高(米))^2)
7.糖尿病譜系功能
8.年齡(年)
9.糖尿病(0或1)

第九個糖尿病為二元的類別變項,1表示病人有糖尿病,0表示沒有

diabete <-read.csv(“https://gist.githubusercontent.com/chaityacshah/899a95deaf8b1930003ae93944fd17d7/raw/3d35de839da708595a444187e9f13237b51a2cbe/pima-indians-diabetes.csv")
colnames(diabete) <- c(“pregnant”,”glucose”,”blood_pressure”,”triceps”,”serum_insulin”,”mass”,”pedigree”,”age”,”diabetes” )

我們的目標是使用 pregnant 、glucose、triceps、mass 欄位預測 diabetes
模型如下:

MODEL <- glm(diabetes ~ pregnant + glucose + triceps + mass,
 data=diabete,family = “binomial”)

使用glm function ,~的左邊是依變項(Y),羅吉斯迴歸的依變項(Y)一定要是二元的類別變項,~的右邊就是自變項(X),可以是類別變數,也可以是連續變數,而且也可以放多個。我們使用的資料集是diabete。

最後一定要記得加上 family = “binomial” ,這樣跑出來才是羅吉斯迴歸!!

我們來看一下模型:
印出MODEL 就可以看到,每一個變項以及截距的coefficients 
intercept (截距)\ pregnant \ glucose \ triceps \ mass 的coefficients 分別為:
-8.154 \ 0.136 \ 0.034 \ -0.004 \ 0.085

而我們可以將邏輯迴歸模式寫為下:
 logit(p)=-8.154+0.136 pregnant +0.034 glucose -0.004 triceps+ 0.085 mass

輸入 summary(MODEL)
可以在coefficients的地方看到Pr(>|z|) 也就是各個變項的 p-value
這邊只有 triceps 沒有顯著之外,其他三個變項都有顯著,代表這三個變項與Y有關係

而勝算比(OR)=exp(b)

就 pregnant 而言,勝算比=exp(0.136)=1.1457
表示每增加一次懷孕次數,得到糖尿病的勝算提高1.1459倍;
就 glucose而言,勝算比=exp(0.034)=1.0346 
表示每增加一血漿葡萄糖濃度,得到糖尿病的勝算提高1.0346倍;
就 mass 而言,勝算比=exp(0.085)=1.0887
表示每增加一體重指數,得到糖尿病的勝算提高1.0887倍;


2020/6/10 更新: 這篇文章默默成為我最受歡迎的文章,此外我也寫了一篇 [SAS]Logistic regression 羅吉斯迴歸 ,裡面有提及單變項與多變項的羅吉斯迴歸,主要使用SAS 講解,但是也有講到如何使用R操作喔,歡迎大家來看看 →[SAS]Logistic regression 羅吉斯迴歸

2019-10-31 0 comment
0 FacebookTwitterPinterestEmail
SAS

[SAS]卡方檢定 Chi-Square test 三種卡方檢定介紹

by wenwu 2019-09-27

[SAS]卡方檢定 Chi-Square test

上次介紹完用R跑卡方檢定
今天要介紹如何用SAS使用卡方檢定


卡方適合度檢定

主要使用於抽樣一組(次)的樣本

H0 : 資料分配符合期望值
H1 : 資料分配不符合期望值

同樣,我們想知道這顆骰子是否公正,每一面出現的機率是不是都是相同
使用 proc freq 在 斜槓後面加 chisq 就有卡方檢定
可以看到圖中的卡方值是7.12 而 p-value = 0.2119 
因為 p-value >0.05 所以不拒絕 H0,表示這顆骰子是公正的

proc freq data=x; 
tables x /nocol nopercent chisq ; run;

卡方獨立性檢定

主要使用於抽樣兩組(次)與兩組(次)以上的樣本

H0 : 研究資料彼此獨立
H1 : 研究資料彼此不獨立

我們想知道學生餐廳中,同學選擇主餐是否與湯品的選擇是否有關係
使用 proc freq 在 斜槓後面加 chisq 就有卡方檢定
meat * soup 兩個變項相乘,就會出現列連表
可以看到圖中的卡方值是0.5701 而 p-value = 0.7520
因為 p-value >0.05 所以不拒絕 H0,表示同學選擇主餐與湯品是獨立的

roc freq data=customer;
tables meat * soup /nocol nopercent chisq ; run;

卡方同質性檢定

主要使用於抽樣兩組(次)與兩組(次)以上的樣本

H0 : 檢定資料是否來自同一個母體,或母體分配相同
H1 : 檢定資料是否來自不同母體,或母體分配不同

其實「卡方獨立性檢定」跟「卡方同質性檢定」的方法是一樣的,然而兩個切入的角度完全不一樣
兩者的差別是「卡方獨立性檢定」主要探討的是「資料關聯性」,而「卡方同質性檢定」探討的則是「各類別比例是否相同」


如果遇到儲存格內的觀測次數小於五 可以用卡方檢定嗎 ?

最後,介紹一下使用卡方時會遇到的狀況
我們常常看到 使用卡方檢定時每一格子的觀測次數不得小於五
所以遇到小於五的話該怎麼辦呢?

首先,可以判斷一下是否可以繼續使用卡方檢定或是使用別的方法

當df>1 時,如果不超過20%的格子的觀測次數小於五(或是有80%以上的格子都大於五,就可以使用卡方檢定
! 注意不許有儲存格出現0的情況 !

另一種方法,可以合併小於五的儲存格
這個方法可以解決問題,但是我們損失的資訊越多,檢定的結果就越有偏差

如果以上的情況都沒有幫助,可以使用葉式連續校正,或是使用費雪精確檢定(Fisher’s Exact Test)

2019-09-27 0 comment
0 FacebookTwitterPinterestEmail
RSAS

[SAS][R]費雪精確 Fisher Exact test 

by wenwu 2019-09-27

[SAS][R]費雪精確 Fisher Exact test 

前幾篇講到卡方檢定,[SAS]卡方檢定和[R]卡方檢定
當樣本數很小(如20),或是超過20%的格子的觀測次數小於五,不宜用卡方檢定,這時候可以用,費雪精確 Fisher Exact test


lady tasting tea experiment

1935年費雪發表了一篇文章,提到這個有趣的實驗。有位女士提到,她可以輕易的辨別出來,將茶加到牛奶裡,還是將牛奶倒進茶裡。
費雪依照這位女士的說法做了一個實驗。他先準備了八杯奶茶,其中四杯是先放牛奶,另外四杯則是先放茶

上圖為實驗的結果,這位女士總共猜對了六杯,我們將這個實驗結果用於 SAS 和 R 上。


example for R

因為100%的儲存格都小於5,所以這裡並不適合用卡方檢定,使用費雪精確

範例檔中,茶先倒入表示為1,牛奶先倒入為2,
這位女士猜對了六杯,其中有兩杯是錯的
進行費雪精確性檢定後P值的雙尾檢定為0.4857
單尾檢定為0.4857/2=0.2429 不拒絕虛無假設, 
代表猜測與實際沒有顯著性差異

real <- c(rep(1,4),rep(2,4))
guess <- c(rep(1,3),rep(2,3),1,2)
table(real,guess)
fisher.test(table(real,guess))

example for SAS

SAS 的程式碼與卡方檢定非常相像,只需在斜槓後加上 fisher

proc freq data=tea;
table real * guess/nocol nopercent chisq fisher ; run;

下面三張圖為SAS的ouput ,結果與R 一樣
費雪精確性檢定後P值的雙尾檢定為0.4857
單尾檢定為0.2429 不拒絕虛無假設, 代表猜測與實際沒有顯著性差異

2019-09-27 0 comment
0 FacebookTwitterPinterestEmail
R

[R]Chi-square 卡方檢定

by wenwu 2019-09-19

[R]Chi-square 卡方檢定

若要分析類別型資料的話,最入門的就是卡方檢定
今天要介紹如何用R來使用卡方檢定


三種卡方檢定

卡方適合度檢定
卡方同質性檢定
卡方獨立性檢定


卡方適合度檢定

主要使用於抽樣一組(次)的樣本

H0 : 資料分配符合期望值
H1 : 資料分配不符合期望值

我們想知道這顆骰子是不是公正的,那我們檢查骰子出現1到6的機率是不是都是1/6
首先我們紀錄每次投骰子的結果,總共六百次(使用sample.int產生投骰子的資料)
使用table就可以看到每個數字出現的次數
接下來使用卡方檢定 
可以看到圖中的卡方值是7.12 而 p-value = 0.2119 
因為 p-value >0.05 所以不拒絕 H0,表示這顆骰子是公正的

若我們想要知道特定的機率,也可以在chisq.test函數裡面調整
在裡面使用 p=c(2/6,0/6,1/6,1/6,1/6,1/6)
表示我們想要知道投骰子的機率是否為 : 數字1出現的機率為 2/6,而出現的機率為 0 , 而其他的機率同樣為 1/6 
可以看到圖中的卡方值是Inf 而 p-value = <0.0001
因為 p-value <0.05 所以拒絕 H0

set.seed(53) #使用 set.seed可以 設定產生隨機樹的初始值
x <- factor(sample.int(6,size = 600,replace = T))
table(x)
chisq.test(table(x))
chisq.test(table(x),p = c(2/6,0/6,1/6,1/6,1/6,1/6))

卡方獨立性檢定

主要使用於抽樣兩組(次)與兩組(次)以上的樣本

H0 : 研究資料彼此獨立
H1 : 研究資料彼此獨立

假設我們想知道學生餐廳中,同學選擇主餐是否與湯品的選擇是否有關係
同樣,生200個1到3的隨機變數,使用兩個ifelse 將 1 = ”chicken” , 2 = ”pork” , 3 = ”beef”
湯品的地方也是,湯品則是兩種

使用table就可以看到每個類別出現的次數
接下來使用卡方檢定 
可以看到圖中的卡方值是0.57005 而 p-value = 0.752
因為 p-value >0.05 所以不拒絕 H0,表示同學選擇主餐與湯品是獨立的

set.seed(35)
yy = sample.int(3,size = 200,replace = T)
meat = ifelse(yy==1,”chicken”,ifelse(yy==2,”pork”,”beef”)) #分類
#使用兩個 ifelse 將 1 = ”chicken” , 2 = ”pork” , 3 = ”beef”
set.seed(23)
soup = ifelse(sample.int(2,size = 200,replace = T)==1,”tomato”,”mushroom”)
table(meat,soup)
chisq.test(table(meat,soup))

卡方同質性檢定

主要使用於抽樣兩組(次)與兩組(次)以上的樣本

H0 : 檢定資料是否來自同一個母體,或母體分配相同
H1 : 檢定資料是否來自不同母體,或母體分配不同

其實「卡方獨立性檢定」跟「卡方同質性檢定」的方法是一樣的,然而兩個切入的角度完全不一樣
兩者的差別是「卡方獨立性檢定」主要探討的是「資料關聯性」,而「卡方同質性檢定」探討的則是「各類別比例是否相同」

我們直接來看例子

假設想知道不同性別,眼睛的狀況是否有同樣的分配,我們使用卡方同質性檢定
同樣,生200組樣本,分別是性別以及眼睛的狀況(近視和遠視)

使用table就可以看到每個類別出現的次數
接下來使用卡方檢定 
可以看到圖中的卡方值是4.461 而 p-value = 0.03468
因為 p-value < 0.05 所以拒絕 H0,表示不同的性別,眼睛的狀況分布是不同的

set.seed(22)
sex = ifelse(sample.int(2,size = 200,replace = T)==1,”male”,”female”)
set.seed(556)
status = ifelse(sample.int(2,size = 200,replace = T)==1,
 “shortsighted”,”longsighted”) #近視和遠視
table(sex,status)
chisq.test(table(sex,status))

如果遇到儲存格內的觀測次數小於五 可以用卡方檢定嗎 ?

最後,介紹一下使用卡方時會遇到的狀況
我們常常看到 使用卡方檢定時每一格子的觀測次數不得小於五
所以遇到小於五的話該怎麼辦呢?

首先,可以判斷一下是否可以繼續使用卡方檢定或是使用別的方法

當df>1 時,如果不超過20%的格子的觀測次數小於五(或是有80%以上的格子都大於五,就可以使用卡方檢定,! 注意不許有儲存格出現0的情況 !

另一種方法,可以合併小於五的儲存格
這個方法可以解決問題,但是我們損失的資訊越多,檢定的結果就越有偏差

如果以上的情況都沒有幫助,可以使用葉式連續校正,或是使用費雪精確檢定(Fisher’s Exact Test)

2019-09-19 0 comment
0 FacebookTwitterPinterestEmail
Load More Posts

近期文章

  • [SAS] Macro Language 2: 內建macro,使用 SQL/DATA step 建立Macro variable
  • [SAS] Macro Language 基礎內容
  • ccClub 讀書會推薦,免費學python
  • [閱讀心得 #21]你願意,人生就會值得
  • 理想生活,該長怎麼樣子?

近期留言

  • 「S kevin」於〈[SAS] Macro Language 2: 內建macro,使用 SQL/DATA step 建立Macro variable〉發佈留言
  • 「S kevin」於〈[SAS] Macro Language 基礎內容〉發佈留言
  • 「peter」於〈多益330 → 多益785 多益成績棕色到藍色證書〉發佈留言
  • 「wenwu」於〈[SAS]存活分析(2) COX regression model〉發佈留言
  • 「joey53111」於〈Statistical Programmer在CRO工作一年的心得〉發佈留言

免費訂閱

不定期更新文章,點一下追蹤就能夠收到最新文章!

一起加入其他 20 位訂閱者的行列

Statistics

  • 20,175
  • 729,921
  • 74
R 線上課程參考

@2019 - All Right Reserved. Designed and Developed by PenciDesign

Wenwu's blog
  • 文章總列表
  • 統計分析
    • R SAS All
      R

      [R]散佈圖與相…

      2019-12-31

      R

      [R]Logis…

      2019-10-31

      R

      [SAS][R]…

      2019-09-27

      R

      [R]Chi-s…

      2019-09-19

      SAS

      [SAS] Ma…

      2026-09-08

      SAS

      [SAS] Ma…

      2026-01-21

      SAS

      [SAS]傾向分…

      2020-10-28

      SAS

      [SAS]Log…

      2020-06-10

      統計分析

      [SAS] Ma…

      2026-09-08

      統計分析

      [SAS] Ma…

      2026-01-21

      統計分析

      什麼是meta-…

      2024-11-05

      統計分析

      Test-ret…

      2024-06-07

  • SAS
    • SAS

      [SAS] Ma…

      2026-09-08

      SAS

      [SAS] Ma…

      2026-01-21

      SAS

      [SAS]傾向分…

      2020-10-28

      SAS

      [SAS]Log…

      2020-06-10

      SAS

      [SAS]迴歸分…

      2020-02-28

  • R
    • R

      [R]散佈圖與相…

      2019-12-31

      R

      [R]Logis…

      2019-10-31

      R

      [SAS][R]…

      2019-09-27

      R

      [R]Chi-s…

      2019-09-19

      R

      [SAS][R]…

      2019-07-08

  • 機器學習
    • 機器學習

      Unsuperv…

      2021-07-22

      機器學習

      Unsuperv…

      2021-07-12

      機器學習

      Unsuperv…

      2021-05-20

      機器學習

      Unsuperv…

      2021-05-12

      機器學習

      Matrix F…

      2021-04-30

  • 閱讀筆記
    • 閱讀筆記

      [閱讀心得 #2…

      2025-02-05

      閱讀筆記

      [閱讀心得#20…

      2024-10-25

      閱讀筆記

      [閱讀心得#19…

      2024-08-16

      閱讀筆記

      [閱讀心得#18…

      2024-05-10

      閱讀筆記

      [閱讀心得#17…

      2022-01-22