r語言插補法 R語言用多重插補法估算相對風險

2021-10-13 01:25:10 字數 1617 閱讀 1698

在這裡,我將用r中的乙個小模擬示例進行說明。首先,我們使用x1和x2雙變數法線和y模擬大型資料集,其中y遵循給定x1和x2的邏輯模型。

首先,我們模擬乙個非常大的完整資料集:

#simulate完整資料 expit < - function(x) n < - 100000 x < - mvrnorm(n,mu = c(0,0),sigma =(c(1,0.2,0.2,1),nrow = 2)) x1 < - x [,1] x2 < - x [,2] y < - 1 *(runif(n)

接下來,我們估計將x1從1更改為0的影響的邊際風險比:

#estimate x1 = 1 vs x1 = 0的邊際風險比,標準化為完整資料 #以後用於mi,我們將編寫乙個獲取資料集並返回此估計值的函式 marginalriskratio < - function(inputdata) fulldata < - data.frame(y = y,x1 = x1,x2 = x2) marginalriskratio(fulldata) [1] 2.295438

接下來,我們使用sullivan 等人考慮的一種機制,在y和x2中缺少一些值:

根據sullivan等人的說法,#make缺少一些資料 z1 < - x1 / 0.2 ^ 0.5 r_y < - 1 *(runif(n)

現在我們可以在y和x2中估算缺失的值。指定邏輯結果模型的缺失結果以及來自與邏輯結果模型相容的插補模型的缺失協變數值:

numimps < - 10 imps < - (obsdata,smtype =「logistic」,smformula =「y~x1 + x2」, method = c(「」,「」,「norm」),m = numimps) [1] "outcome variable(s): y" [1] "passive variables: " [1] "partially obs. variables: x2" [1] "fully obs. substantive model variables: x1" [1] "imputation 1" [1] "imputing missing outcomes using specified substantive model." [1] "imputing: x2 using x1 plus outcome" [1] "imputation 2" [1] "imputation 3" [1] "imputation 4" [1] "imputation 5" [1] "imputation 6" [1] "imputation 7" [1] "imputation 8" [1] "imputation 9" [1] "imputation 10" warning message: in smcfcs.core(originaldata, smtype, smformula, method, predictormatrix, : rejection sampling failed 7 times (across all variables, iterations, and imputations). you may want to increase the rejection sampling limit.

最後,我們可以應用我們之前定義的函式來估算每個估算資料集的邊際風險比,並使用魯賓規則(即採用對數風險比的平均值)將它們結合起來:

estlogrr

我們在插補後得到乙個非常接近完整資料估計的估計值。

r語言插補法 R語言 缺失值處理之多重插補

筆者寄語 缺失值是資料清洗過程中非常重要的問題 其他方法可見 r語言 異常值檢驗 離群點分析 異常值處理 筆者在進行mice包的多重插補過程中遇到相當多的問題。大致的步驟簡介如下 缺失資料集 mcmc估計插補成幾個資料集 每個資料集進行插補建模 glm lm模型 將這些模型整合到一起 pool 評價...

r語言插補法 R語言實現基於多重插補的廣義模型

資料有缺失,是一件令人不愉快的事情。然而,無論是回顧性研究還是前瞻性的研究,都可能難以避免資料缺失。那麼,當你拿到了乙份資料,發現其中有個別或一些缺失,你會如何處理呢?目前,可供選擇的做法大概有以下兩種 1.若缺失較少,且樣本量較大,這時選擇刪除缺失的觀測行,也是無傷根本的 2.若樣本量不大,缺失比...

插補搜尋法

有問題 插補搜尋法 說明 如果卻搜尋的資料分布平均的話,可以使用插補 interpolation 搜尋法來進行搜尋,在搜尋的物件大於500時,插補搜尋法會比 二分搜尋法 來的快速。include include include define max 10 define swap x,y void q...