2016-03-25 20 views
2

Rmiceパッケージを使用して、大量の欠落のあるデータセットの複数の代入を実行しています。代用プロセスや後で分析するために重要な変数が未加工データセットにあります。しかし、私はcor()を使って相関行列を作成し、いくつかの変数を含まないようにします。 xmice関数によって作成midsオブジェクトであり、一方は通常miraオブジェクトを作成するために、繰り返し分析を実行するwithを使用する場合、通常、単純なデータセットxため、cor(x[,3:7])は7を介してカラム3の相関行列を生じる、次いでpoolを使用して、mipoプール結果オブジェクトを作成します。ただし、withの2番目の要素は、データセットの列を参照する式とし、cor()に入る入力の種類ではありません。 xmidsオブジェクトの場合、cor(x[,3:7])は機能せず、どちらもwith(x, cor(x[,3:7]))ではありません。複数の代用データセットの列のサブセットの相関行列

複数の代用データセットから変数のサブセットのプール相関行列を作成するにはどうすればよいですか?

#reproducible example 
x = data.frame(matrix(rnorm(100),10,10)) #create random data 
x[9:10,] = NA #add missingness 
x.mice = mice(x) #make imputed data set 
cor(x.mice[,3:7]) #doesn't work 
with(x.mice, cor(x.mice[,3:7])) #doesn't work 
with(x.mice[,3:7], cor()) #doesn't work 
+1

[再現可能な例]を追加することを検討してください(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)へあなたの質問:それは私たちがあなたを助けてくれるのを助けるでしょう。 –

+0

良い点、Vincent Guillemot。私は質問に1つ追加しました。ありがとう。 –

+1

データの列に名前を付けると、おそらく扱いが簡単になります。 (マウスを呼び出す前に)関連する場所で 'x = setNames(x、letters [1:10])'を使うと、 ''(x.mice、cor(cbind(a、b)))」となるでしょう。 – user20650

答えて

0

私は同じ問題を抱えています。新しく追加されたパッケージ "miceadds"は、マウスパッケージに非常に便利な機能を追加します。

具体的には、あなたの問題のために、多重に帰属 データセットの相関と共分散のための推論を行う機能micombine.corを見上げます。

例:

library(missForest) 
library(mice) 
library(miceadds) 

#Get the data 
data <- iris 

#introduce missings 
iris.mis <- prodNA(iris, noNA = 0.1) 


#imputedata 
imputed  <-mice(iris.mis, m = 5, maxit = 5, method = "pmm") 

#correlations for the first three variables (package miceadds) 
correlations<- miceadds::micombine.cor(mi.res=iris.mis, variables = c(1:3)) 

#and because i am a psychologist and don't like scientific coding... 
old_school<-format(correlations$p, scientific=FALSE) 
correlations["p_value"] <- NA; correlations$p_value <- old_school; 
correlations 
関連する問題