本案數據來自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;
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;
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等
供參:195-2010: Creating Forest Plots from Pre-computed Data Using PROC SGPLOT and Graph Template Language
如果你是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和兩組的人次數打入,圖和統計值就會自動產生。
沒有留言:
張貼留言