2025年3月23日 星期日

以Logistic regression (羅吉斯迴歸) 評估多個自變項對依變項的影響情形

 本案數據來自SAS訓練資料庫,內容如下:

data PAIN;
input Treatment $ Sex $ Age Duration Pain $ @@;
datalines;
P  F  68   1  No   B  M  74  16  No  P  F  67  30  No
P  M  66  26  Yes  B  F  67  28  No  B  F  77  16  No
A  F  71  12  No   B  F  72  50  No  B  F  76   9  Yes
A  M  71  17  Yes  A  F  63  27  No  A  F  69  18  Yes
B  F  66  12  No   A  M  62  42  No  P  F  64   1  Yes
A  F  64  17  No   P  M  74   4  No  A  F  72  25  No
P  M  70   1  Yes  B  M  66  19  No  B  M  59  29  No
A  F  64  30  No   A  M  70  28  No  A  M  69   1  No
B  F  78   1  No   P  M  83   1  Yes B  F  69  42  No
B  M  75  30  Yes  P  M  77  29  Yes P  F  79  20  Yes
A  M  70  12  No   A  F  69  12  No  B  F  65  14  No
B  M  70   1  No   B  M  67  23  No  A  M  76  25  Yes
P  M  78  12  Yes  B  M  77   1  Yes B  F  69  24  No
P  M  66   4  Yes  P  F  65  29  No  P  M  60  26  Yes
A  M  78  15  Yes  B  M  75  21  Yes A  F  67  11  No
P  F  72  27  No   P  F  70  13  Yes A  M  75   6  Yes
B  F  65   7  No   P  F  68  27  Yes P  M  68  11  Yes
P  M  67  17  Yes  B  M  70  22  No  A  M  65  15  No
P  F  67   1  Yes  A  M  67  10  No  P  F  72  11  Yes
A  F  74   1  No   B  M  80  21  Yes A  F  69   3  No
;run;


資料集包含五個變數:

治療類型treatment (A 和 B 代表兩種檢驗治療,P 代表安慰劑治療)、性別sex、年齡age (患者剛接受治療當下的年齡)、持續時間duration (治療前疼痛症狀已持續的時間,單位月)和疼痛Pain (疼痛與否,為依變數)。本研究將評估不同治療方式(含安慰劑)對高齡神經痛患者的鎮痛效果。

接下來將評估前四個變項與疼痛依變項的關聯性。然而,因版大主觀意識認為男女生對疼痛的忍受性不同,故額外放入「治療類型*性別」交互作用項。而expb乃要求SAS給出exponentiated values of the estimates。出處:SAS Help Center: MODEL Statement


先下一個初步模型語法,如下:

proc logistic data=PAIN;
class Treatment Sex;
model Pain= Treatment  Sex  Treatment*Sex   Age  Duration / expb;
run;

joint test 結果顯示
1.沒有證據表明治療類型對男性和女性的疼痛影響不同(上表上黃區) 
2.沒有證據表明疼痛結果與疼痛持續時間有關(上表下黃區)
3.剩餘3個自變項均與疼痛依變項有關,故下一個模型自變項只留下這三項(為了教學說明,還是會放入Duration,所以實際上是4個自變項)。

接下來的模型語法 (自變項採「前進選擇法」) 如下:

proc logistic data=PAIN;
class Treatment Sex;
model Pain=Treatment Sex  Age Duration /selection=forward expb;
run;


可以發現Duration變項沒被SAS選上(白話文即Duration對疼痛有無沒有顯著性影響,不要放進來)。而Type 3 effect test結果也與forward selection一致,如下:


最後將final版語法寫起來且透過proc logistic內建繪圖語法以oddsratio statement和effectplot statement輸出統計圖形,如下:

ods graphics on;
proc logistic data=PAIN plots(only)=(oddsratio(range=clip));
class Treatment Sex /param=ref;
model Pain= Treatment Sex Age / noor;
oddsratio Treatment;
oddsratio Sex;
oddsratio Age;
contrast 'Pairwise A vs P' Treatment 1  0 / estimate=exp;
contrast 'Pairwise B vs P' Treatment 0  1 / estimate=exp;
contrast 'Pairwise A vs B' Treatment 1 -1 / estimate=exp;
contrast 'Female vs Male' Sex 1 / estimate=exp;
effectplot / at(Sex=all) noobs;
effectplot slicefit(sliceby=Sex plotby=Treatment) / noobs;
run;



contrast statement參照值與Parameterized Effects有關,見SAS Help Center: CONTRAST Statement   

黃區內容請記著,後面會用到(當然也可下語法強制改為Pain="Yes")。
Proc logistic預設是將依變項由小至大或字母由前到後排序後,再以前者進行建模。ex: N開頭的No在Y開頭的Yes之前,故以Pain="No"建模,反之,以Pain="Yes"當參考組。若要倒過來,則於Proc logistic statement後寫入descending。另一種方式則是網路更常見方法,即寫成如下: 
model Pain(event="Yes")Treatment Sex Age / noor;
上述寫法即以Yes建模,並以No當Ref。值得留意的是,若依變項為數值型的0和1,這裡仍然要用引號,即model Pain(event="1")


上表說明
1.與安慰劑相比,考量性別與年齡後,治療 A 得到NO Pain的風險為 24.02 (3.3-175.1)  p=0.0017 (有顯著性)
2.與安慰劑相比,考量性別與年齡後,治療 B 得到NO Pain的風險為 41.5 (4.5-383.3)  p=0.0010 (有顯著性)  
3.與治療 B相比,治療 A得到NO Pain的風險為 0.58 (0.09-3.9)  p=0.55567 (未有顯著性)
4.與男性患者相比,考量治療類型與年齡後,女性患者得到NO Pain的風險為 6.2 (1.3-29.2) p=0.0213 (有顯著性)


上圖若須美化,可將統計結果匯出成dataset,再透過Proc sgplot來產出高品質.png圖檔。
提示: 使用 scatter statement和其項下的option,例如xerrorlower, xerrorupper, markerattrs等
如果你是Proc sgplot大師,當然也可以做出像Comprehensive Meta Analysis(CMA, 執行Meta-analysis的第一線工具軟體)匯出的圖形,如下:


此圖由SAS產生。若是由CMA產出,會更輕鬆。
我的CMA自費訓練課

白話即
1.考量性別和年齡因素後,治療A和B在減輕疼痛方面都優於安慰劑
2.考量治療類型和年齡因素後,女性的進步往往比男性好
3.考量治療類型和性別後,年輕患者的復健情況比老年患者好(見下表)
每增加1個月, 得到NO Pain的風險為0.767倍,即得到Yes Pain的風險為1.3倍 (1/0.767)
 註: 95%信賴界限區間未含1,表示具統計顯著性。


proc logistic能輸出多項ROC相關統計表圖,有興趣者可自行google,此支線劇情本篇文章不額外陳述。
提示:
1.於proc logistic statement下補上plots(only)=(roc) rocoptions
2.ROC statement可用於比較各自變項的ROC模型(含ROC關聯性統計值)
3.可透過roccontrast reference("") / estimate; 篩出表現較佳模式。
4.最後再以Hosmer and Lemeshow配適度檢定評估model本身所帶來的預測是否是好的(此處須留意,p>0.05才是好的,最好 >0.1為佳)。但這兩個統計學家David Hosmer與Stanley Lemeshow在文獻中有特別說明,若你的樣本數不足400,不建議使用此考驗法。

若你有買QI Macros,可快速製作出簡易ROC圖和統計值,如下:
cut point和兩組的人次數打入,圖和統計值就會自動產生。

再回到原來的議題。最後,Proc logistic會產出以下統計圖。這兩張圖呈現的概念已很清楚,版大應不用再補充。


如果要讓這個案子統計分析更完善,除了增加ROC相關統計值表圖外,可再以proc power跑統計檢定力。

如果本文章提供的資訊對你有幫助,可以考慮請我喝飲料(金額隨喜),謝謝。
台新銀行帳戶


沒有留言: