文本的大部分內(nèi)容來自下面的文獻:
Riley R D, Ensor J, Snell K I E, Harrell F E, Martin G P, Reitsma J B et al. Calculating the sample size required for developing a clinical prediction model BMJ 2020; 368 :m441 doi:10.1136/bmj.m441
這個文章是今年2月份瞅見的忧便,本來那個時候就想寫出來分享給大家握础,奈何我太懶了寂祥,成功托到了11月,哈哈哈腕铸。剛好最近有粉絲問臨床預(yù)測模型的樣本量惜犀,就撿回來這篇文章分享給大家。
一個變量10個樣本狠裹?
“一個變量最少需要10個樣本”虽界,這句話是很多同學(xué)開題報告樣本量計算時候都要說的一句話(有些同學(xué)說的15個,有些說20個酪耳,都是可以在上面這個文章中找到參考文獻的)浓恳,確實有這么個法則,英文叫做10 events per variable 縮寫為(10 EPV)碗暗,就是每一個變量就應(yīng)該有10個樣本颈将,確切地說應(yīng)該是你估計多少個β,你就最少需要10β個樣本言疗,比如你的預(yù)測變量有分類變量晴圾,轉(zhuǎn)化為啞變量的時候我們估計的β其實是變多的,所以這一點也需要考慮進去噪奄,比如對于有3個水平的分變自變量死姚,這么一個變量其實是需要最少20個樣本的。同時如果你的模型考慮預(yù)測變量的高次項勤篮,這個時候一個變量對應(yīng)的β值也變多了都毒,也需要提高樣本量。
所以說大家最好不要說一個變量對應(yīng)10個樣本碰缔,而應(yīng)當(dāng)改成1個待估參數(shù)對應(yīng)最少10個樣本账劲。
這么一個簡單而廣泛使用的標(biāo)準,也是有爭議的。當(dāng)然大家還是依然可以用哈瀑焦,沒人會對大家要求這么高的腌且,只不過作者在文章給出了一個更加好的預(yù)測模型樣本量計算方法。
樣本量計算4步法
4步法是van Smeden and Riley et al提出來的榛瓮,其基本思想是從4個方面考慮一個預(yù)測研究的樣本量铺董,然后取4個考慮中最大的樣本量作為我們的最終樣本量。
一是考慮我們的樣本量能夠準確估計結(jié)局的發(fā)生率(2分類)或者結(jié)局均值(連續(xù))禀晓。
對于分類結(jié)局精续,我們有樣本量計算公式
這個也是大家統(tǒng)計課本上的樣本量計算公式
兩個公式一樣的,都是為了估算分類結(jié)局的率粹懒。
就是這個方法首先考慮我們的樣本量能夠合理估計出結(jié)局的發(fā)生率驻右,或者發(fā)生水平。
第二步是確定使得我們模型預(yù)測誤差最小的樣本量崎淳。對于分類結(jié)局來說堪夭,模型預(yù)測誤差最小需要考慮預(yù)測變量個數(shù),預(yù)計結(jié)局占比拣凹,平均結(jié)局誤差這3個指標(biāo)森爽,用下面的公式算:
n就是需要的樣本量,分子上面的3個符號分別代表預(yù)計結(jié)局占比嚣镜,預(yù)測變量個數(shù)爬迟,平均結(jié)局誤差。通過這一步計算出來的樣本量能夠使得模型預(yù)測誤差最小菊匿。
第三步是考慮減少過擬合的最小樣本量付呕,就是樣本量越少越容易過擬合,我們得將樣本量擴大到過擬合不再是問題的程度跌捆。這個時候?qū)τ诜诸惤Y(jié)局的樣本量估計我們需要考慮預(yù)測變量個數(shù)徽职,期望結(jié)局占比,期望模型表現(xiàn)Cox-Snell R squared statistic (R2cs)這3個指標(biāo)佩厚。樣本量計算公式如下:
其中s一般取0.9(這是個防止模型過擬合懲罰極端值的一個指標(biāo))姆钉,P是預(yù)測變量個數(shù),R2cs越小越好抄瓦,一般取0.1潮瓶,所以對于一個20個預(yù)測變量,s取0.9钙姊,R2cs取0.1時我們需要的樣本量按上面的公式算出來就應(yīng)該是1698個毯辅。
第4步是考慮模型優(yōu)化的問題,我們的樣本量要使得我們的模型R2和最優(yōu)模型R2的差異最小煞额,算法如下思恐,反正我也看不太懂赤屋,然后反正大家記住R2cs和max(R2cs)都是自己設(shè)定,p是預(yù)測變量個數(shù):
上面的4個步驟其實就是做預(yù)測模型的時候要考慮的4個標(biāo)準壁袄,每個標(biāo)準都有相應(yīng)的樣本量要求就產(chǎn)生了4個樣本量,最終我們是取4個樣本量中最大的那個作為我們預(yù)測模型的最終的樣本量就可以了媚媒。
樣本量計算的R實現(xiàn)
理論部分很難懂哦嗜逻,反正我們知道我們需要從多個方面去考慮一個臨床預(yù)測模型的樣本量計算問題,更重要的是我們掌握整個樣本量的計算方法就行缭召。作者的論文中是有stata的代碼的栈顷,這兒給大家寫一個R語言的實際例子,預(yù)測模型大家做的多的還是二分類結(jié)局嵌巷,所以我們就完整地走一個二分類結(jié)局樣本量計算的4步法萄凤,4步如下圖:
掌握了這4步對大家前瞻性研究設(shè)計,回顧性研究確定預(yù)測變量個數(shù)都是蠻有好處的:
The calculations are especially helpful when prospective data collection (eg, new cohort study) are required before model development; however, they are also relevant when existing data are available to guide the number of predictors that can be considered.
并且搪哪,整個4步在R語言的pmsampsize函數(shù)中一下就搞定靡努。大家可以去瞅瞅pmsampsize的函數(shù)說明。
比如我現(xiàn)在要設(shè)計一個二分類變量為結(jié)局變量的預(yù)測模型晓折,我估計我要納入24個預(yù)測因素惑朦,結(jié)局的發(fā)生率為17.4,估計R-squared為0.288漓概,那么我就可以直接寫出代碼:
pmsampsize(type="b",rsquared=0.288,parameters=24,prevalence=0.174)
運行后即可得到結(jié)果漾月,結(jié)果中有默認的模型和最優(yōu)模型的差異,有默認的容許誤差胃珍,最終計算出的我們需要的樣本量為668個梁肿。
當(dāng)然啦pmsampsize還可以計算連續(xù)變量結(jié)局和生存數(shù)據(jù)結(jié)局的預(yù)測模型所需要的樣本量,大家可以去瞅瞅函數(shù)說明哈觅彰。
小結(jié)
今天給大家寫了臨床預(yù)測模型的樣本量的計算方法吩蔑,希望大家知道除了1個變量10個樣本這個傻瓜法則之外還有更好的方法。感謝大家耐心看完填抬,自己的文章都寫的很細哥纫,代碼都在原文中,希望大家都可以自己做一做痴奏,請轉(zhuǎn)發(fā)本文到朋友圈后私信回復(fù)“數(shù)據(jù)鏈接”獲取所有數(shù)據(jù)和本人收集的學(xué)習(xí)資料蛀骇。如果對您有用請先收藏,再點贊分享读拆。
也歡迎大家的意見和建議擅憔,大家想了解什么統(tǒng)計方法都可以在文章下留言,說不定我看見了就會給你寫教程哦檐晕,另歡迎私信暑诸。