北京協(xié)和醫(yī)學(xué)院,中國醫(yī)學(xué)科學(xué)院,國家心血管病中心,阜外醫(yī)院,醫(yī)學(xué)統(tǒng)計(jì)部(102300)王闖世 范肖雪 趙延延 白銀曉 王 楊
【提 要】 目的 探討定性指標(biāo)單臂多中心臨床試驗(yàn)中調(diào)整中心效應(yīng)的策略及其應(yīng)用。方法 介紹使用倒方差和D-L法計(jì)算中心加權(quán)效應(yīng)值在定性指標(biāo)單臂多中心臨床試驗(yàn)中調(diào)整中心效應(yīng)的基本原理和相關(guān)考慮,如權(quán)重的計(jì)算,率的轉(zhuǎn)換等,編寫SAS程序,并以“人工心臟瓣膜”試驗(yàn)為實(shí)例說明。結(jié)果 計(jì)算中心加權(quán)效應(yīng)值處理單臂多中心臨床試驗(yàn)中心效應(yīng)時,若各中心效應(yīng)同質(zhì),各中心權(quán)重等于其效應(yīng)值方差的倒數(shù);可根據(jù)Q值判斷是否需要對各中心權(quán)重進(jìn)行調(diào)整。當(dāng)分中心結(jié)局發(fā)生率趨近0或1時,建議對原始率進(jìn)行數(shù)據(jù)轉(zhuǎn)換。實(shí)例中,使用雙反正弦轉(zhuǎn)換法的結(jié)果顯示,中心加權(quán)復(fù)合終點(diǎn)事件率的95%置信區(qū)間上限低于目標(biāo)值,拒絕原假設(shè),提示研究產(chǎn)品的療效優(yōu)于設(shè)定的目標(biāo)療效。結(jié)論 定性指標(biāo)單臂多中心臨床試驗(yàn)調(diào)整中心效應(yīng)可通過計(jì)算中心加權(quán)效應(yīng)值,若分中心結(jié)局發(fā)生率接近0或1,建議先對原始效應(yīng)值進(jìn)行數(shù)據(jù)轉(zhuǎn)換。
在多中心臨床試驗(yàn)(multicenter clinical trial)中,因各中心在受試者基線特征、臨床實(shí)踐等方面可能存在差異而產(chǎn)生的中心效應(yīng)(center effects)[1]是統(tǒng)計(jì)分析階段不可忽視的問題,《藥物臨床試驗(yàn)的生物統(tǒng)計(jì)學(xué)指導(dǎo)原則》和《ICH E9臨床試驗(yàn)的統(tǒng)計(jì)學(xué)指導(dǎo)原則》中均指出需考慮中心效應(yīng),選擇恰當(dāng)?shù)闹行男?yīng)調(diào)整策略是準(zhǔn)確評價藥物或醫(yī)療器械有效性和安全性的前提。多中心隨機(jī)對照試驗(yàn)(randomized controlled trial,RCT)中,根據(jù)主要結(jié)局指標(biāo)的類型(定性或定量),可采用相應(yīng)中心效應(yīng)調(diào)整的方法,如協(xié)方差分析、Cochran-Mantel-Haenszel(CMH)檢驗(yàn)和多水平模型(multilevel model)等[2-3],其中CMH檢驗(yàn)的本質(zhì)是計(jì)算加權(quán)效應(yīng)值,各中心權(quán)重與其樣本量或效應(yīng)值方差相關(guān)。但在單臂多中心臨床試驗(yàn)中,目前缺少相關(guān)方法介紹。本文借鑒RCT中CMH方法調(diào)整中心效應(yīng)的思路,在定性指標(biāo)的單臂臨床試驗(yàn)中通過“加權(quán)”的方法以調(diào)整中心效應(yīng),并編寫SAS程序。
1.基本原理
(1)中心加權(quán)效應(yīng)值
CMH方法是主要結(jié)局指標(biāo)為二分類定性變量(如手術(shù)是否成功)的多中心RCT中調(diào)整中心效應(yīng)的常用策略之一,其基本原理是把各中心作為“層”,基于各層的四格表數(shù)據(jù)分別計(jì)算效應(yīng)值并通過一定的算法合并,達(dá)到調(diào)整中心效應(yīng)的目的。根據(jù)所采用的算法,SAS中提供兩個效應(yīng)估計(jì)值:Mantel-Haenszel(MH)估計(jì)值和logit估計(jì)值,均為“中心水平”的加權(quán),MH法把各中心樣本量的倒數(shù)作為權(quán)重[4],logit法把各中心效應(yīng)值自然對數(shù)的方差取倒數(shù)作為權(quán)重[5]。類似地,在定性指標(biāo)的單臂臨床試驗(yàn)中,可借鑒上述中心加權(quán)的策略,通過使用倒方差等算法計(jì)算中心加權(quán)效應(yīng)值調(diào)整中心效應(yīng)。
(1)
θi~N(θ,τ2)
(2)
各中心間效應(yīng)估計(jì)值的差異包括隨機(jī)抽樣誤差(si)和中心間變異(τ2);若各中心的效應(yīng)同質(zhì),即各個中心的效應(yīng)相同或一致,不同中心來自同一總體,則各中心效應(yīng)估計(jì)值的差異為隨機(jī)抽樣誤差(si),沒有中心間變異(τ2=0)。根據(jù)倒方差法[6]和D-L法[7],兩種情形下,中心加權(quán)效應(yīng)值θw及其標(biāo)準(zhǔn)誤Se(θw)的計(jì)算分別如公式(4)、(5)和公式(11)、(12)所示。
若各中心效應(yīng)同質(zhì),各中心權(quán)重wi取其效應(yīng)估計(jì)值方差的倒數(shù),計(jì)算如下:
(3)
(4)
(5)
相應(yīng)的95%置信區(qū)間為:
θw±1.96Se(θw)
(6)
在單臂臨床試驗(yàn)中,通常會基于主要結(jié)局指標(biāo)預(yù)先設(shè)定有臨床意義的目標(biāo)值Δ(objective performance criteria),在單側(cè)0.025的置信水平下,根據(jù)公式(6)計(jì)算其95%CI是否包含Δ判定是否拒絕原假設(shè):對于高優(yōu)指標(biāo)(如手術(shù)成功),若95%CI下限大于Δ,則拒絕原假設(shè);對于低優(yōu)指標(biāo)(如死亡),若95%CI上限小于Δ,則拒絕原假設(shè)。亦可通過標(biāo)準(zhǔn)化變換(或z變換)[8]:
(7)
若z>1.96,則在單側(cè)0.025的置信水平下拒絕原假設(shè)。
各中心效應(yīng)是否不同(即是否有中心效應(yīng))可使用下面公式判斷[7]:
Q=∑wi(θi-θw)2
(8)
(9)
其中,
(10)
(11)
(12)
類似地,把根據(jù)公式(11)和(12)得到的加權(quán)效應(yīng)值95%CI與目標(biāo)值Δ比較,判斷是否拒絕原假設(shè)。
(2)效應(yīng)值(率)的轉(zhuǎn)換
對于二分類定性結(jié)局指標(biāo),結(jié)局發(fā)生數(shù)服從二項(xiàng)分布B(n,π),π為結(jié)局發(fā)生概率,可以證明當(dāng)n足夠大,且nπ和nπ(1-π)都大于5時,二項(xiàng)分布B(n,π)近似正態(tài)分布N[nπ,nπ(1-π)][8],前文中心加權(quán)效應(yīng)值的區(qū)間估計(jì)也是在該前提下完成。但當(dāng)結(jié)局發(fā)生率趨近0或1時,可能會出現(xiàn):(1)按照近似正態(tài)估計(jì)得到的置信區(qū)間下限小于0或者上限大于1;(2)結(jié)局發(fā)生率趨近于0或者1的中心因方差趨于0而被賦予過大的權(quán)重[6]。為解決上述問題,可考慮對各中心效應(yīng)值(即率)進(jìn)行數(shù)據(jù)轉(zhuǎn)換,計(jì)算轉(zhuǎn)換后的中心加權(quán)效應(yīng)值,再反算。本文主要介紹兩種轉(zhuǎn)換:logit轉(zhuǎn)換和雙反正弦轉(zhuǎn)換(double arcsine transformation)。
logit轉(zhuǎn)換是醫(yī)學(xué)研究中常用的一種數(shù)據(jù)轉(zhuǎn)換,轉(zhuǎn)換后的變量θt及其方差var(θt)計(jì)算如下:
(13)
(14)
其中,n表示總?cè)藬?shù)。通過公式(4)~(6)或公式(8)~(12)得到θt的中心加權(quán)估計(jì)值θtw后,反算未轉(zhuǎn)換的效應(yīng)估計(jì)值θw:
(15)
需要特別注意的是,當(dāng)θ等于0或者1時,無法直接進(jìn)行l(wèi)ogit轉(zhuǎn)換,可以先進(jìn)行“連續(xù)校正”[9],如對該中心的結(jié)局和非結(jié)局發(fā)生數(shù)各加0.5。
雙反正弦轉(zhuǎn)換[10-11],又稱為Freeman-Tukey轉(zhuǎn)換,轉(zhuǎn)換后的變量θt及其方差var(θt)計(jì)算公式如下:
(16)
(17)
其中,y表示結(jié)局發(fā)生數(shù),n表示總?cè)藬?shù)。類似地,計(jì)算得到θtw后,反算θw的公式如下:
(18)
或使用下面簡易公式反算:
(19)
2.實(shí)例資料來源
本文以一項(xiàng)評價置入人工主動脈瓣膜安全性和有效性的多中心、單組目標(biāo)值臨床試驗(yàn)為例。該臨床試驗(yàn)共有5個中心參與,其主要終點(diǎn)指標(biāo)是術(shù)后12個月內(nèi)的全因死亡或嚴(yán)重卒中的發(fā)生,評價術(shù)后12個月復(fù)合事件發(fā)生率是否低于目標(biāo)值(35%),全分析集FAS(full analysis set)和符合方案集PPS(per protocol set)分別有101例和97例受試者,各中心入組情況見表1。結(jié)果將分別展示不考慮中心效應(yīng)與使用上述權(quán)重法調(diào)整中心效應(yīng)的總事件發(fā)生率及其95%CI,并提供調(diào)整中心效應(yīng)的SAS程序;同時將展示使用原始率與轉(zhuǎn)換率計(jì)算的加權(quán)率及95%CI,以比較上述數(shù)據(jù)轉(zhuǎn)換方法。
1.不考慮中心效應(yīng)
若不考慮中心效應(yīng),對各中心數(shù)據(jù)進(jìn)行直接累加估計(jì)總體事件發(fā)生率及其95%CI,無論是漸進(jìn)正態(tài)法或者精確概率法,F(xiàn)AS和PPS對應(yīng)的事件發(fā)生率的95%CI上限均遠(yuǎn)低于目標(biāo)值35%(表1),拒絕原假設(shè),可以認(rèn)為研究產(chǎn)品的療效優(yōu)于設(shè)定的目標(biāo)療效。
2.加權(quán)法調(diào)整中心效應(yīng)
FAS集中,使用原始率,雙反正弦轉(zhuǎn)換率或logit轉(zhuǎn)換率均未提示異質(zhì)性(P>0.1),使用各中心率的方差倒數(shù)作為其相應(yīng)權(quán)重,得到率的加權(quán)均值95%CI上限低于目標(biāo)值,拒絕原假設(shè);考慮中心間變異調(diào)整中心權(quán)重后結(jié)果仍穩(wěn)定。PPS集中,未調(diào)整中心權(quán)重計(jì)算的加權(quán)率95%CI上限也均低于目標(biāo)值,但雙反正弦轉(zhuǎn)換和logit轉(zhuǎn)換法提示存在異質(zhì)性,調(diào)整中心權(quán)重后,logit法加權(quán)率的95%置信區(qū)間上限為35.3%,略高于目標(biāo)值,但考慮到01中心事件發(fā)生數(shù)為0,使用logit轉(zhuǎn)換時進(jìn)行了“連續(xù)校正”,其結(jié)果解讀應(yīng)慎重。
本實(shí)例中各中心事件發(fā)生數(shù)均較少(<5,見表1),當(dāng)使用漸進(jìn)正態(tài)估計(jì)各中心事件發(fā)生率時,95%CI下限“截斷”為0,這種情況下使用原始率方差的倒數(shù)作為各中心權(quán)重的處理不太合理,提示應(yīng)對率進(jìn)行數(shù)據(jù)轉(zhuǎn)換。雙反正弦轉(zhuǎn)換法中各中心權(quán)重與中心樣本量成正比,而logit轉(zhuǎn)換法中權(quán)重與中心樣本量和事件發(fā)生率均相關(guān),但考慮到存在中心事件發(fā)生數(shù)為0的情況,logit法需要進(jìn)行“連續(xù)校正”,本實(shí)例中更推薦使用雙反正弦轉(zhuǎn)換法對率轉(zhuǎn)換后計(jì)算加權(quán)效應(yīng)值。
表1 各中心術(shù)后12個月復(fù)合終點(diǎn)事件發(fā)生率
表2 術(shù)后12個月復(fù)合終點(diǎn)事件率的加權(quán)均值(調(diào)整中心效應(yīng))
3.程序?qū)崿F(xiàn)
基于第一部分介紹的中心效應(yīng)調(diào)整的策略,我們編寫了相應(yīng)的SAS宏程序(%S_CG_CenAdj)以便讀者參考。并以上述試驗(yàn)為例,提供調(diào)用該宏程序的代碼,詳見文后附錄。
以單組目標(biāo)值設(shè)計(jì)為代表的單臂臨床試驗(yàn)在創(chuàng)新醫(yī)療器械產(chǎn)品評價中比較常見,在該研究設(shè)計(jì)下準(zhǔn)確評估器械產(chǎn)品的有效性和安全性非常重要,但目前尚缺少單臂臨床試驗(yàn)中心效應(yīng)調(diào)整策略的研究。借鑒RCT中CMH法調(diào)整中心效應(yīng)的思路,本文介紹了定性指標(biāo)單臂多中心臨床試驗(yàn)中調(diào)整中心效應(yīng)的策略及考慮,并以某“人工心臟瓣膜”的多中心單臂試驗(yàn)為例介紹其應(yīng)用。
根據(jù)ICH E9及中國食品藥品監(jiān)督管理局發(fā)布的《藥物臨床試驗(yàn)的生物統(tǒng)計(jì)學(xué)指導(dǎo)原則》,在試驗(yàn)數(shù)據(jù)庫鎖定前,統(tǒng)計(jì)師需要制定統(tǒng)計(jì)分析計(jì)劃書并預(yù)先指明計(jì)劃使用的統(tǒng)計(jì)分析方法,尤其是針對主要終點(diǎn)指標(biāo)的分析;對于多中心臨床試驗(yàn),還需明確中心效應(yīng)調(diào)整的策略。目前在單臂多中心臨床試驗(yàn)中,往往沒有考慮中心效應(yīng)問題,僅對各中心的結(jié)局發(fā)生數(shù)和總例數(shù)進(jìn)行簡單地累加來計(jì)算總體結(jié)局發(fā)生率。而實(shí)踐中各中心受試者招募能力、結(jié)局發(fā)生率等可能存在較大差異,如本研究實(shí)例中,02和04中心結(jié)局發(fā)生率分別是33.3%(2/6)和5.7%(2/35),忽視中心效應(yīng)可能會得到有偏性的效應(yīng)估計(jì)值。本文提出通過計(jì)算中心加權(quán)效應(yīng)值以調(diào)整中心效應(yīng),其思路與多中心RCT中CMH法調(diào)整中心效應(yīng)類似;該策略的倒方差加權(quán)法和D-L法與單組率的薈萃分析算法一致,如把各中心看作薈萃分析中每個納入的原始研究,既往亦有研究介紹薈萃分析在二分類定性指標(biāo)的多中心RCT中處理中心效應(yīng)的應(yīng)用[12-13]。
若分中心結(jié)局發(fā)生(低優(yōu)指標(biāo))或未發(fā)生(高優(yōu)指標(biāo))例數(shù)較少(如≤5),建議對效應(yīng)值(即率)轉(zhuǎn)換后計(jì)算加權(quán)效應(yīng)值;使用logit轉(zhuǎn)換時,當(dāng)分中心結(jié)局發(fā)生率為0或1時,需進(jìn)行“連續(xù)校正”,其結(jié)果解讀應(yīng)慎重。目前關(guān)于轉(zhuǎn)換方法的優(yōu)劣仍存在爭議,有研究顯示雙反正弦轉(zhuǎn)換優(yōu)于logit轉(zhuǎn)換[6],但其他研究發(fā)現(xiàn)雙反正弦轉(zhuǎn)換可能會產(chǎn)生令人誤導(dǎo)的結(jié)果[14],主要因?yàn)樵摲ㄔ诜此懵蕰r僅需要一個樣本量[10],并建議可通過開展一系列敏感性分析(如使用一定范圍的多個樣本量)來檢查結(jié)果的穩(wěn)定性。關(guān)于不同轉(zhuǎn)換方法的比較有待通過模擬研究進(jìn)一步探討。實(shí)際研究中,可開展系列分析(如權(quán)重調(diào)整前后,率的轉(zhuǎn)換與否及不同轉(zhuǎn)換方法等),提供多種場景下的分析結(jié)果以綜合判斷結(jié)果的穩(wěn)定性。
本研究也有其局限性,主要考慮了結(jié)局指標(biāo)為二分類定性指標(biāo)的單臂試驗(yàn),未涉及多分類定性指標(biāo)或定量指標(biāo)。實(shí)際研究中,二分類定性指標(biāo)在單臂試驗(yàn)中更常見,而多分類定性指標(biāo)和定量指標(biāo)可根據(jù)臨床專業(yè)知識轉(zhuǎn)化為二分類定性指標(biāo)后開展相關(guān)分析。
附 錄
宏程序%S_CG_CenAdj:
/*宏參數(shù)使用說明:*/
/*dataset:原始數(shù)據(jù)集,包含各中心結(jié)局事件發(fā)生例數(shù)及總受試者例數(shù);*/
/*type:取值p,darcsin或logit,表示使用原始率,雙反正弦轉(zhuǎn)換率或logit轉(zhuǎn)換率;*/
/*event:各中心結(jié)局事件例數(shù);*/
/*total:各中心受試者例數(shù);*/
/*siteno:中心號;*/
/*name:標(biāo)識率的轉(zhuǎn)換方法,取值“原始率”、“雙反正弦轉(zhuǎn)換率”或“l(fā)ogit轉(zhuǎn)換率”,與type取值相對應(yīng),如type取值為p,name取值為“原始率”;*/
/*output:生成新數(shù)據(jù)集,用于輸出結(jié)果*/
%macro S_CG_CenAdj(dataset,type,event,total,siteno,name,output);
/*數(shù)據(jù)預(yù)處理:包括原始率的轉(zhuǎn)換及各中心權(quán)重(未調(diào)整前)計(jì)算*/
data weight_&type.;
set &dataset.;
noevent=&total.-&event.;/*未發(fā)生事件例數(shù)=總例數(shù)-事件發(fā)生例數(shù)*/
total_in=1/&total.;/* 各中心受試者例數(shù)的倒數(shù) */
/*原始率*/
%if &type.=p %then%do;
if &event.=0 or &event.=&total.then do;/*當(dāng)事件發(fā)生率為0或1時,*/
event1=&event.+0.5;/*事件數(shù)+0.5*/
noevent1=noevent+0.5;/*非事件數(shù)+0.5*/
total1=event1+noevent1;/*總例數(shù)+1*/
end;
else do;
event1=&event.;
noevent1=noevent;
total1=&total.;
end;
&type._p=&event./&total.;/*各中心事件率,無需上述+0.5校正*/
var=((event1/total1)*(noevent1/total1))/total1;/*各中心事件率的方差*/
%end;
/*率的logit轉(zhuǎn)換*/
%if &type.=logit %then%do;
if &event.=0 or &event.=&total.then do;/*當(dāng)事件發(fā)生率為0或1時,*/
&event.=&event.+0.5;/*事件數(shù)+0.5*/
&total.=&total.+1;/*總例數(shù)+1*/
end;
&type._p=log((&event./&total.)/(noevent/&total.));/*logit轉(zhuǎn)換:logit(p)=log(p/(1-p))*/
var=(1/(&event.))+(1/(noevent));/*各中心logit轉(zhuǎn)換率的方差*/
%end;
/*率的雙反正弦轉(zhuǎn)換,即Freeman-Tukey轉(zhuǎn)換*/
%if &type.=darcsin %then%do;
&type._p=arsin(sqrt(&event./(&total.+1)))+arsin(sqrt((&event.+1)/(&total.+1)));/*FT轉(zhuǎn)換*/
var=1/(&total.+0.5);/*各中心FT轉(zhuǎn)換率的方差*/
%end;
weight=1/var;/*各中心權(quán)重*/
p_w=weight*&type._p;/* 權(quán)重×事件發(fā)生率 */
weight2=weight*weight;/* 權(quán)重×權(quán)重 */
run;
/*生成宏變量:計(jì)算Q統(tǒng)計(jì)量、加權(quán)率(未調(diào)整權(quán)重)等*/
proc sql noprint;
select sum(p_w),/*各中心權(quán)重×事件發(fā)生率之和*/
sum(weight),/*各中心權(quán)重之和*/
sum(p_w)/sum(weight),/*率的加權(quán)平均(未調(diào)整權(quán)重)即:加權(quán)率*/
1/sqrt(sum(weight)),/*加權(quán)率的標(biāo)準(zhǔn)誤*/
sum(weight2),/*各中心權(quán)重×權(quán)重之和*/
sum(&total.),/*總樣本量*/
count(distinct &siteno.),/*中心數(shù)量*/
count(distinct &siteno.)/sum(total_in)/*諧波均數(shù)harmonic mean*/
into:p_w_sum,:weight_sum,:effect_p0,:se,:weight2_sum,:total_sum,:C,:h_mean
from weight_&type.;
select sum(weight*(&effect_p0.-&type._p)**2)into:Q /*Q值*/
from weight_&type.;
quit;
/*異質(zhì)性檢驗(yàn),并計(jì)算中心間變異(D值)*/
data Q_&type.;
p_Q=1-probchi(&Q.,&C.-1);/*異質(zhì)性檢驗(yàn)*/
if p_Q<0.0001 then pvalue_Q='<0.0001';else pvalue_Q=put(p_Q,6.4);
D=max(0,(&Q.-(&C.-1))/(&weight_sum.-(&weight2_sum./&weight_sum.)));
call symput(′D′,D);
run;
/*生成宏變量:用于計(jì)算加權(quán)率(調(diào)整權(quán)重后)及其95%置信區(qū)間的相關(guān)指標(biāo)*/
proc sql noprint;
create table weight_&type.
as select *,1/(&D.+1/weight)as adjust_weight,/*調(diào)整后的各中心權(quán)重*/
&type._p*calculated adjust_weight as p_adw /*調(diào)整后權(quán)重×事件發(fā)生率*/
from weight_&type.;
select sum(p_adw),/*各中心調(diào)整后權(quán)重×事件發(fā)生率之和*/
sum(adjust_weight),/*各中心調(diào)整后權(quán)重之和*/
sum(p_adw)/sum(adjust_weight),/*率的加權(quán)平均(調(diào)整權(quán)重后)即:加權(quán)率*/
1/sqrt(sum(adjust_weight))/*加權(quán)率的標(biāo)準(zhǔn)誤*/
into:p_adw_sum,:adw_sum,:ad_effect_p0,:ad_se
from weight_&type.;
quit;
/*計(jì)算事件率及其95%置信區(qū)間:原始率,logit轉(zhuǎn)換率和雙反正弦轉(zhuǎn)換率;率的反算;調(diào)整權(quán)重與否*/
data effect_&type.;
set Q_&type.;
Q=put(&Q.,6.2);
/*原始率*/
% if &type.=p %then%do;
effect_p=&effect_p0.;/*不調(diào)整權(quán)重effect size*/
lower=max(effect_p-probit(0.975)*&se.,0);/*95%置信區(qū)間下限*/
upper=min(effect_p+probit(0.975)*&se.,1);/*95%置信區(qū)間上限*/
ad_effect_p=&ad_effect_p0.;/*調(diào)整權(quán)重effect size*/
ad_lower=max(ad_effect_p-probit(0.975)*&ad_se.,0);/*95%置信區(qū)間下限*/
ad_upper=min(ad_effect_p+probit(0.975)*&ad_se.,1);/*95%置信區(qū)間上限*/
%end;
/*logit轉(zhuǎn)換*/
% if &type.=logit %then%do;
effect_p=exp(&effect_p0.)/(1+exp(&effect_p0.));/*不調(diào)整權(quán)重effect size*/
lower=exp(&effect_p0.-probit(0.975)*&se.)/(1+exp(&effect_p0.-probit(0.975)*&se.));/*95%置信區(qū)間下限*/
upper=exp(&effect_p0.+probit(0.975)*&se.)/(1+exp(&effect_p0.+probit(0.975)*&se.));/*95%置信區(qū)間上限*/
ad_effect_p=exp(&ad_effect_p0.)/(1+exp(&ad_effect_p0.));/*調(diào)整權(quán)重effect size*/
ad_lower=exp(&ad_effect_p0.-probit(0.975)*&ad_se.)/(1+exp(&ad_effect_p0.-probit(0.975)*&ad_se.));/*95%置信區(qū)間下限*/
ad_upper=exp(&ad_effect_p0.+probit(0.975)*&ad_se.)/(1+exp(&ad_effect_p0.+probit(0.975)*&ad_se.));/*95%置信區(qū)間上限*/
%end;
/*雙重反正弦轉(zhuǎn)換*/
%if &type.=darcsin %then%do;
effect_p=0.5*(1-sign(cos(&effect_p0.))*sqrt((1-(sin(&effect_p0.)+(sin(&effect_p0.)-1/sin(&effect_p0.))/(&h_mean.))**2)));/*不調(diào)整權(quán)重effect size*/
lower0=&effect_p0.-probit(0.975)*&se.;
upper0=&effect_p0.+probit(0.975)*&se.;
lower=0.5*(1-sign(cos(lower0))*sqrt((1-(sin(lower0)+(sin(lower0)-1/sin(lower0))/(&h_mean.))**2)));/*95%置信區(qū)間下限*/
upper=0.5*(1-sign(cos(upper0))*sqrt((1-(sin(upper0)+(sin(upper0)-1/sin(upper0))/(&h_mean.))**2)));/*95%置信區(qū)間上限*/
ad_effect_p=0.5*(1-sign(cos(&ad_effect_p0.))*sqrt((1-(sin(&ad_effect_p0.)+(sin(&ad_effect_p0.)-1/sin(&ad_effect_p0.))/(&h_mean.))**2)));/*調(diào)整權(quán)重effect size*/
ad_lower0=&ad_effect_p0.-probit(0.975)*&ad_se.;
ad_upper0=&ad_effect_p0.+probit(0.975)*&ad_se.;
ad_lower=0.5*(1-sign(cos(ad_lower0))*sqrt((1-(sin(ad_lower0)+(sin(ad_lower0)-1/sin(ad_lower0))/(&h_mean.))**2)));/*95%置信區(qū)間下限*/
ad_upper=0.5*(1-sign(cos(ad_upper0))*sqrt((1-(sin(ad_upper0)+(sin(ad_upper0)-1/sin(ad_upper0))/(&h_mean.))**2)));/*95%置信區(qū)間上限*/
/*如果95%置信區(qū)間下限或上限小于minimum,則“截斷”為0;如果95%置信區(qū)間下限或上限大于maximum,則“截斷”為1*/
minimum=(arsin(sqrt(0/(&h_mean.+1)))+arsin(sqrt((0+1)/(&h_mean.+1))));
maximum=(arsin(sqrt(&h_mean./(&h_mean.+1)))+arsin(sqrt((&h_mean.+1)/(&h_mean.+1))));
if lower0 if &effect_p0. if upper0 if lower0>maximum then lower=1; if &effect_p0.>maximum then effect_p=1; if upper0>maximum then upper=1; if ad_lower0 if &ad_effect_p0. if ad_upper0 if ad_lower0>maximum then ad_lower=1; if &ad_effect_p0.>maximum then ad_effect_p=1; if ad_upper0>maximum then ad_upper=1; %end; run; /*生成輸出數(shù)據(jù)集,保留關(guān)鍵指標(biāo)*/ data &output.; length label $50; retain label effect CI ad_effect ad_CI Q pvalue_Q; set effect_&type.; label=“&name.”; effect=compress(put(effect_p*100,6.2)||'%'); lower=put(lower*100,6.2); upper=put(upper*100,6.2); CI=compress(′(′||lower||′%′||′,′||upper||′%′||′)′); ad_effect=compress(put(ad_effect_p*100,6.2)||′%′); ad_lower=put(ad_lower*100,6.2); ad_upper=put(ad_upper*100,6.2); ad_CI=compress(′(′||ad_lower||′%′||′,′||ad_upper||′%′||′)′); label label=“數(shù)據(jù)轉(zhuǎn)換方法” effect=“中心權(quán)重法:事件發(fā)生率” CI=“中心權(quán)重法:95%置信區(qū)間” ad_effect=“調(diào)整中心權(quán)重:事件發(fā)生率” ad_CI=“調(diào)整中心權(quán)重:95%置信區(qū)間” Q=“Q統(tǒng)計(jì)量” pvalue_Q=“Q檢驗(yàn)P值”; keep label effect CI ad_effect ad_CI Q pvalue_Q; run; %mend S_CG_CenAdj; 宏程序調(diào)用示例: %S_CG_CenAdj(example,p,event,total,siteno,原始率,p1); %S_CG_CenAdj(example,logit,event,total,siteno,logit轉(zhuǎn)換率,p2); %S_CG_CenAdj(example,darcsin,event,total,siteno,雙反正弦轉(zhuǎn)換率,p3);