2016-12-20 2 views
0

bootライブラリに関数を実装する際に問題があります。私が実装したいR - ペアになった(誤って)一致するブートストラップ機能を実装する

機能は、2つの配列間の一致の数だ次

fsyn = function(x) sum(x[1,] == x [2,]) 

です。

私のデータは、このような

id V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 
1 1 c a c b c c b d d a 
2 1 c d a a c b d a b a 
3 2 b d c b b b c d a b 
4 2 b a b c b c d b a d 

として配列のセットであるこれらの配列についての重要な何かが、彼らはidでををペアになっているという事実です。

私は2つのことをすることに興味があります。まず、一致の数をidでブートストラップし、2つ目のランダムな個体を2つ目にブートストラップします。

最初の手順は

df %>% funcHamC 

第二機能を

library(dplyr) 

chid = df$id 
# sampling paired sequences # 
wchid = function(chid) which(chid %in% sample(chid, 1)) 
# the matches function # 
fsyn = function(x) sum(x[1,] == x [2,]) 
# wrapping the function # 
funcHamC = function(df) df[wchid(chid), -1] %>% fsyn 

によって実現することができるが、単に

funcHamR = function(df) df[sample(df$id, 2), -1] %>% fsyn 
df %>% funcHamR 

ように書くことができる。しかし、私はこの2つの関数を使用して問題を有しますbootとなります。

library(boot) 
boot(df, funcHamC, R = 10) 
boot(df, funcHamR, R = 10) 

これは機能しません。何か案が ?

データ

df = as.data.frame(t(replicate(20, sample(letters[1:4], 10, T)))) 
df$id = rep(1:10, 2) 
df = df %>% select(id, everything()) %>% arrange(id) 

答えて

2

boot機能を選択するためにサンプル値を指定するパラメータであるstatistic関数秒に二つの引数を期待。独自のメソッドを使用してデータからランダムに選択するため、sim引数を'parametric'に設定する必要があります。これは、ran.gen引数を使用して、データからランダムな値を生成する関数を指定します。 「ran.genが指定されていない場合、デフォルトではすべてのシミュレーションがstatisticの一部として含まれるべきである場合には、元のdataを返す関数である。」:ヘルプファイルから引用し

C.bootR.bootなどの変数にブート出力を保存すると、サンプルはC.boot$tR.boot$tになります。

C.boot <- boot(df, statistic=funcHamC, R = 10, sim='parametric') 
R.boot <- boot(df, statistic=funcHamR, R = 10, sim='parametric') 

生成された値から必要な統計情報を取得できます。

+0

ありがとう – giacomo

関連する問題