傾向性匹配評(píng)分PSM(R實(shí)現(xiàn))

基本知識(shí)

  1. 通過一定的統(tǒng)計(jì)學(xué)方法對(duì)試驗(yàn)組與對(duì)照組進(jìn)行篩選,使篩選出來的研究對(duì)象在某些重要臨床特征(潛在的混雜因素)上具有可比性
  2. 一般是通過某種統(tǒng)計(jì)學(xué)模型求得每個(gè)觀測的多個(gè)協(xié)變量的綜合傾向性得分阵难,再按照傾向性得分是否接近進(jìn)行匹配
  3. 最常用的統(tǒng)計(jì)模型一般是以分組變量為因變量岳枷,其它可能影響結(jié)果的混雜因素為協(xié)變量構(gòu)建logistic回歸模型
  4. 計(jì)算每個(gè)觀測的傾向得分,按照得分大小進(jìn)行匹配

代碼實(shí)現(xiàn)(使用MatchIt包)

library(MatchIt)
library(tableone)
data(lalonde)
head(lalonde,4)
# treat age educ   race married nodegree re74 re75      re78
# NSW1     1  37   11  black       1        1    0    0  9930.046
# NSW2     1  22    9 hispan       0        1    0    0  3595.894
# NSW3     1  30   12  black       0        0    0    0 24909.450
# NSW4     1  27   11  black       0        1    0    0  7506.146

str(lalonde)
# 'data.frame': 614 obs. of  9 variables:
#   $ treat   : int  1 1 1 1 1 1 1 1 1 1 ...
# $ age     : int  37 22 30 27 33 22 23 32 22 33 ...
# $ educ    : int  11 9 12 11 8 9 12 11 16 12 ...
# $ race    : Factor w/ 3 levels "black","hispan",..: 1 2 1 1 1 1 1 1 1 3 ...
# $ married : int  1 0 0 0 0 0 0 0 0 1 ...
# $ nodegree: int  1 1 0 1 1 1 0 1 0 0 ...
# $ re74    : num  0 0 0 0 0 0 0 0 0 0 ...
# $ re75    : num  0 0 0 0 0 0 0 0 0 0 ...
# $ re78    : num  9930 3596 24909 7506 290 ...

#dput(names(lalonde))
preBL <- CreateTableOne(vars=c("treat","age","educ","race","married","nodegree","re74","re75","re78"),
                         strata="treat",data=lalonde,
                         factorVars=c("treat","race","married","nodegree"))
# treat是感興趣變量,re78為結(jié)局變量
print(preBL,showAllLevels = TRUE)
image.png
f=matchit(treat~re74+re75+educ+race+age+married+nodegree,data=lalonde,method="nearest",ratio = 1)
# treat是感興趣變量,re78為結(jié)局變量

summary(f)
# ...
# Sample Sizes:
#   Control Treated
# All           429     185
# Matched       185     185
# Unmatched     244       0
# Discarded       0       0

matchdata=match.data(f)

mBL <- CreateTableOne(vars=c("treat","age","educ","race","married","nodegree","re74","re75","re78"),
                         strata="treat",data=matchdata,
                         factorVars=c("treat","race","married","nodegree"))
print(mBL,showAllLevels = TRUE)
image.png
plot(f, type = 'jitter', interactive = FALSE)
image.png

可見race這個(gè)變量還是不平衡呜叫,使用卡鉗值來解決

f1=matchit(treat~re74+re75+educ+race+age+married+nodegree,data=lalonde,method="nearest",caliper=0.05)

summary(f1)
# ...
# Sample Sizes:
#   Control Treated
# All           429     185
# Matched       109     109
# Unmatched     320      76
# Discarded       0       0
matchdata1=match.data(f1)

mBL1 <- CreateTableOne(vars=c("treat","age","educ","race","married","nodegree","re74","re75","re78"),
                      strata="treat",data=matchdata1,
                      factorVars=c("treat","race","married","nodegree"))
print(mBL1,showAllLevels = TRUE)
image.png
plot(f1, type = 'jitter', interactive = FALSE)
image.png

導(dǎo)出結(jié)果數(shù)據(jù)

library(foreign)
matchdata$id<-1:nrow(matchdata)

write.csv(matchdata1,"matchdata.csv")
# write.dta(matchdata,"matchdata.dta")
  1. PSM的適用條件:對(duì)照組樣本量足夠大嫩舟,對(duì)照組和試驗(yàn)組樣本量之比5:1以上,確保絕大多數(shù)試驗(yàn)組對(duì)象可以匹配上合適的對(duì)照怀偷,最好所有試驗(yàn)組對(duì)象均得到良好匹配家厌;
  2. PSM與回歸的關(guān)系:能用PSM的均可以用回歸分析,可以用回歸的未必可以用PSM椎工。建議同時(shí)采用PSM和回歸分析處理數(shù)據(jù)饭于,當(dāng)兩者結(jié)果一致的時(shí)候說明結(jié)果較可信

參考資料
丁香園課程完整版R語言進(jìn)階之機(jī)器學(xué)習(xí)
How to use R for matching samples (propensity score)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蜀踏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子掰吕,更是在濱河造成了極大的恐慌果覆,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件殖熟,死亡現(xiàn)場離奇詭異局待,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)菱属,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門钳榨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纽门,你說我怎么就攤上這事薛耻。” “怎么了赏陵?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵饼齿,是天一觀的道長。 經(jīng)常有香客問我蝙搔,道長缕溉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任吃型,我火速辦了婚禮倒淫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘败玉。我一直安慰自己敌土,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布运翼。 她就那樣靜靜地躺著返干,像睡著了一般。 火紅的嫁衣襯著肌膚如雪血淌。 梳的紋絲不亂的頭發(fā)上矩欠,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天,我揣著相機(jī)與錄音悠夯,去河邊找鬼癌淮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛沦补,可吹牛的內(nèi)容都是我干的乳蓄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼夕膀,長吁一口氣:“原來是場噩夢啊……” “哼虚倒!你這毒婦竟也來了美侦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤魂奥,失蹤者是張志新(化名)和其女友劉穎菠剩,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耻煤,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡具壮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哈蝇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棺妓。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖买鸽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贯被,我是刑警寧澤眼五,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站彤灶,受9級(jí)特大地震影響看幼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜幌陕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一诵姜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搏熄,春花似錦棚唆、人聲如沸捶惜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽隅居。三九已至止后,卻和暖如春瞎惫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背译株。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國打工瓜喇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人歉糜。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓乘寒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親匪补。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肃续,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容