??專注R語言在??生物醫(yī)學(xué)中的使用 設(shè)為“星標(biāo)”,精彩不錯過 BMJ在2020年發(fā)表了一篇關(guān)于預(yù)測模型樣本量計算的文章(10.1136/bmj.m441,這篇文章是免費下載的,記得把補(bǔ)充文件也下載下來),算是目前樣本量計算的指南性文件。 并且作者還提供了一個R包( 但是要注意該文獻(xiàn)的樣本量計算是針對開發(fā)臨床預(yù)測模型需要的樣本量,也就是訓(xùn)練集的樣本量,不是外部驗證集的樣本量。如果是驗證集的樣本量,作者專門又寫了3篇文章,分別針對回歸、二分類、生存數(shù)據(jù):
另外,該文獻(xiàn)的樣本量計算方法是針對3大回歸模型的:線性回歸、邏輯回歸、cox回歸。如果是一些機(jī)器學(xué)習(xí)方法(比如隨機(jī)森林、支持向量機(jī)等)則需要更多的樣本。 經(jīng)典方法Harrell老爺子在他的書《Regression Modeling Strategies》中介紹的開發(fā)模型的樣本量計算方法是: 在開發(fā)數(shù)據(jù)集(也就是訓(xùn)練集)中,連續(xù)型結(jié)果的有效樣本量由研究參與者的總數(shù)決定(有多少用多少)。對于二分類結(jié)果,有效樣本量通常被認(rèn)為大約等于事件(有結(jié)果的事件)和非事件(沒有結(jié)果的事件)的最小值; time-to-event數(shù)據(jù)中,樣本量可以粗略等于陽性事件的數(shù)量。 在為二分類或time-to-event數(shù)據(jù)開發(fā)預(yù)測模型時,所需要的樣本量常用的計算方法是10EPV法,即陽性事件的數(shù)量至少是預(yù)測變量個數(shù)的10倍(10 events per variable,10EPV)。 但是“variable”一詞具有誤導(dǎo)性,因為在模型中一個預(yù)測變量可能有多個β(即回歸系數(shù)),例如,具有三個類別的分類型預(yù)測變量就會有兩個β(例如腫瘤等級1、2、3,那么就會有β(2和1比)、β(3和1比),因為分類變量在回歸分析中需要進(jìn)行啞變量編碼)。還有就是在建模過程中使用了多項式轉(zhuǎn)換和樣條變換等也會使得同一個變量有多個β,如果變量之間有交互項也會產(chǎn)生同樣的結(jié)果。 由于預(yù)測模型的參數(shù)(也就是回歸系數(shù)β)通常多于實際的預(yù)測變量個數(shù),所以最好使用10EPP(10 events per candidate predictor parameter)法,即陽性事件的數(shù)量至少是“候選預(yù)測變量的參數(shù)”的10倍?!昂蜻x”一詞很重要,因為模型過擬合的程度與預(yù)測變量參數(shù)的數(shù)量有關(guān),而不是最終模型方程中的參數(shù)數(shù)量。 但是10EPP原則目前也有一些爭議,也有大佬建議5EPP或者15、20、50EPP。這些數(shù)量的使用都是和具體的情況有關(guān)的,也沒個金標(biāo)準(zhǔn),不僅取決于相對于候選預(yù)測變量參數(shù)數(shù)量的事件數(shù)量,還取決于參與者總數(shù)、研究人群中的結(jié)果比例(發(fā)生率)以及模型的預(yù)期預(yù)測性能等。 4步法Van Smeden等和Riley等人最近的工作描述了如何計算預(yù)測模型開發(fā)所需的樣本量,使用條件是用戶指定目標(biāo)人群中的總體結(jié)果風(fēng)險或平均結(jié)果值、候選預(yù)測變量參數(shù)的數(shù)量以及總體模型擬合方面的預(yù)期模型性能。具體實施起來總結(jié)為4個步驟:
第一步樣本大小必須讓預(yù)測模型的截距能被精確估計,以確保開發(fā)的模型可以準(zhǔn)確預(yù)測平均結(jié)果值(對應(yīng)連續(xù)型數(shù)據(jù))或總體結(jié)果比例(對應(yīng)二分類或者生存數(shù)據(jù))。一個簡單的方法是計算:能夠準(zhǔn)確估計“沒有預(yù)測變量的空模型(null model)的截距”所需要的樣本量。 這里涉及一個簡單的數(shù)學(xué)知識,就是線性模型的截距反映了模型預(yù)測的平均值。 這個“準(zhǔn)確估計”一般要求誤差在0.05以內(nèi),也就是說預(yù)測值最好不要超過均值的95%可信區(qū)間。 下圖是計算公式和一個例子。假如一個二分類數(shù)據(jù),它的陽性事件比例是0.5,為了控制誤差在0.05以內(nèi),根據(jù)以下公式計算,需要的樣本量最少是385個。 第二步預(yù)測值和真實值之間的誤差可以用很多指標(biāo)衡量,比如平均絕對百分比誤差(Mean Absolute Percentage Error MAPE),這個指標(biāo)其實是衡量回歸模型的常用指標(biāo),對于二分類數(shù)據(jù)如果使用的是概率的話也能用這個指標(biāo)衡量。 下面是計算公式和一個例子。假如一個二分類數(shù)據(jù),它的陽性事件比例是0.3,預(yù)測變量有10個,為了控制誤差(MAPE)在0.05以內(nèi),根據(jù)以下公式計算,需要的樣本量最少是461個。 第三步樣本量越少且預(yù)測變量數(shù)量越多,則越容易過擬合,因此需要足夠的樣本量防止過擬合。 建模過程中通常會使用收縮法(Shrinkage,或者被稱為懲罰(penalisation)或正則化(regularisation))來降低過擬合的風(fēng)險。Riley等人建議使用一個較小的收縮值(≤10%),并計算此時所需要的樣本量。并且還需要指定候選預(yù)測變量參數(shù)的個數(shù)以及一個模型性能指標(biāo),比如Cox-Snell R2(記為CS-R方,屬于偽R方的一種)。CS-R方可以反應(yīng)信噪比(signal:noise),從而反應(yīng)模型是否過擬合。 對于連續(xù)型數(shù)據(jù)來說,CS-R方就是決定系數(shù),反應(yīng)模型所能解釋的方差(或者叫變異)百分比,范圍是0到1之間,越接近1越好,說明模型能夠準(zhǔn)確識別數(shù)據(jù)內(nèi)部的模式,不會被噪聲(誤差)干擾,如果CS-R方接近0則說明模型很有可能過擬合。 對于二分類數(shù)據(jù)和生存數(shù)據(jù)來說,CS-R方的范圍是0到max(CS-R方)。對于邏輯回歸模型來說,如果陽性事件發(fā)生率為0.5,0.4,0.3,0.2,0.1,0.05,0.01,那么對應(yīng)的max(CS-R方)分別是0.75,0.74,0.71,0.63,0.48,0.33,0.11。所以即使模型的預(yù)期性能非常好,這個CS-R方的值也一般會選擇比較小的值。 以下是二分類和生存數(shù)據(jù)的樣本量計算公式和一個示例。對于一個邏輯回歸模型,如果有20個候選預(yù)測變量參數(shù)(EPP),CS-R方選擇0.1,那么為了使收縮值保持在10%,最少的樣本量是1698。 Cox-Snell R2(也就是CS-R方)的選擇有多種方法,以下是作者比較推薦的幾種:
本文獻(xiàn)的附件5提供了詳細(xì)的公式用于計算max(CS-R方),感興趣的自己查看一下吧。 第四步應(yīng)該有足夠多的樣本量保證模型的表面指標(biāo)和真實指標(biāo)之間的差異足夠小。 表面指標(biāo)(apparent values),假如我們用訓(xùn)練集開發(fā)了一個模型,然后讓這個模型對訓(xùn)練集進(jìn)行預(yù)測,這樣得到的指標(biāo)就是表面指標(biāo),這種計算模型指標(biāo)的方法叫做重代入法(resubstitution)。真實指標(biāo)是指模型在其他數(shù)據(jù)中(就是模型開發(fā)時沒用過的數(shù)據(jù))得到的更真實、更接近模型真實性能的指標(biāo)。 本篇文獻(xiàn)中采用的指標(biāo)是另外一種調(diào)整的R方,即:Nagelkerke-R方(也是偽R方的一種),Nagelkerke-R方=CS-R方/max(CS-R方)。 下面是二分類和生存數(shù)據(jù)的樣本量計算公式。對于一個邏輯回歸模型,假設(shè)陽性事件的比例是0.05(此時對應(yīng)的max(CS-R方)是0.33),指定CS-R方為0.2,那么為了使真實的Nagelkerke-R方和表面Nagelkerke-R方的差異保持在0.05,至少需要的樣本量是1079。 總結(jié)下面是一個總結(jié),對于連續(xù)型數(shù)據(jù),推薦使用4步法(C1-C4),對于二分類數(shù)據(jù)推薦使用4步法(B1-B4),對于生存數(shù)據(jù)推薦使用3步法(T1-T4)。 除此之外作者專門寫了一個R包用于計算臨床預(yù)測模型的樣本量: R包使用方法下面用3個實例演示這個R包的使用方法。
二分類數(shù)據(jù)假如我們要根據(jù)妊娠15周時測定的各種指標(biāo)預(yù)測孕婦發(fā)生子癇前期的風(fēng)險,這是一個二分類數(shù)據(jù),結(jié)果變量是發(fā)生子癇/不發(fā)生子癇。 假設(shè)該數(shù)據(jù)中,發(fā)生子癇的比例是0.05(陽性事件的比例),候選預(yù)測變量的參數(shù)數(shù)量是30(EPP是30),max(CS-R方)是0.33。如果我們預(yù)期模型能夠解釋15%的變異,根據(jù)第3步中介紹的CS-R方的計算方法,可以得到CS-R方=0.15*0.33=0.05。 有了這幾個數(shù)據(jù),就可以計算樣本量了:
對于二分類數(shù)據(jù),使用4步法計算樣本量,其中B2這一步不能通過這個包計算,所以這個包給出了其他3個步驟所需要的樣本量,B2這個步驟算出來是需要544例,因為要同時滿足4個步驟的要求,所以最終需要的樣本量是5249例。 生存數(shù)據(jù)假如我們要預(yù)測治療停止一段時間后,靜脈血栓栓塞復(fù)發(fā)的風(fēng)險。這是一個time-to-event類型的數(shù)據(jù),結(jié)局是復(fù)發(fā)/不復(fù)發(fā),時間就是治療停止后的時長。 假設(shè)該數(shù)據(jù)中,C指數(shù)是0.69,CS-R方是0.051,EPP=30,平均隨訪時間是2.07年,陽性事件發(fā)生比例是0.065,需要進(jìn)行預(yù)測的時間點選擇2年,那么樣本量計算如下:
生存數(shù)據(jù)的樣本量計算遵循4步法,所以結(jié)果中給出了4個步驟每一步驟所需要的樣本量,最終需要的樣本量是5143例。 連續(xù)型數(shù)據(jù)假如我們要預(yù)測青少年的無脂肪體重,該任務(wù)很明顯是一個回歸任務(wù),結(jié)果變量是數(shù)值型的。 假設(shè)該數(shù)據(jù)中,CS-R方為0.9,EPP=20,總體的平均無脂肪體重是26.7kg(截距的值),總體的無脂肪體重的標(biāo)準(zhǔn)差是8.7kg,那么計算樣本量的代碼為:
連續(xù)型數(shù)據(jù)的樣本量計算也遵循4步法,最終所需要的樣本量是254。
|
|