2017-08-11 62 views
0

我發現mice中的quickpred函數對於提供一些指導重用:選擇變量以在多重歸因過程中用作預測變量。我最近遇到了一個場景,其中quickpred將給定結果的預測因子數量減少到800多個變量。出於好奇,是否可以指定函數選擇的每個結果的預測因子的最大數量(比如15)?R小鼠:使用quickpred指定預測變量的最大數目

例如:

mice包幫助文件,

df <- mice::nhanes 

# default: include all predictors with absolute correlation over 0.1 
quickpred(df) 

# all predictors with absolute correlation over 0.4 
quickpred(df, mincor=0.4) 

# include age and bmi, exclude chl 
quickpred(nhanes, mincor=0.4, inc=c('age','bmi'), exc='chl') 

# only include predictors with at least 30% usable cases 
quickpred(nhanes, minpuc=0.3) 

回答

0

更新基於在評論

如何對這種做法再額外信息。運行相關網格 - 計算每的預測變量的數量,然後輸入quickpred個別相關性以反映閾值要求。

對於每預測1點或更小的預測(變化x<=1來修改):

grid <- seq(0.1, 0.5, 0.05) 
result <- apply(sapply(grid, function(x) { rowSums(quickpred(df, mincor=x)) } ), 1, function(x) {min(which(x<=1))}) 
result 
age bmi hyp chl 
    1 7 8 8 

因此,使用第一相關從grid爲變量1,7號從可變2等

這可以直接插入quickpred

> quickpred(df, mincor=grid[result]) 
    age bmi hyp chl 
age 0 0 0 0 
bmi 0 0 0 0 
hyp 1 0 0 0 
chl 1 0 0 0 

其中每個變量至多有一個預測變量。如果我們想要3點或更少的預測,我們得到

> quickpred(df, mincor=grid[result]) 
    age bmi hyp chl 
age 0 0 0 0 
bmi 1 0 1 1 
hyp 1 0 0 1 
chl 1 1 1 0 

原來的答覆

你或許可以修復自己的計算參數的數量,然後選擇停產,讓您的所需數量預測。例如,如果我經歷seq(0.1, 0.5, 0.05)定義的相關性,計算相應的二進制quickpred預測矩陣的列總和(以獲得有關哪些列/變量包含在預測中的信息),然後計算是非零列我用下面的代碼

grid <- seq(0.1, 0.5, 0.05) 
result <- sapply(grid, function(x) { sum(colSums(quickpred(df, mincor=x))>0) } ) 

產生

> result 
[1] 4 4 4 4 4 4 3 1 1 

說我只在我的模型要1個預測。那麼我將不得不使用0.45(= grid[min(which(result <= 1))])的最小絕對相關性,因爲這是我的預測矩陣第一次以一個預測變量(從這個網格出發)結束。

> quickpred(df, mincor=.45) 
    age bmi hyp chl 
age 0 0 0 0 
bmi 0 0 0 0 
hyp 1 0 0 0 
chl 1 0 0 0 

所以age是預測因子。並與mincor=.4我得到

> quickpred(df, mincor=.40) 
    age bmi hyp chl 
age 0 0 0 0 
bmi 0 0 0 0 
hyp 1 0 0 1 
chl 1 0 1 0 

其中涉及3個預測指標。

+0

效果很好。不幸的是,我應該進一步指定 - 我期望指定每個結果的最大預測因子數。假設我需要15個預測結果;預測因子不需要相同的結果。這可能嗎? –

+0

附加信息更新答案 – ekstroem