2016-09-17 8 views
3

dplyrbootstrapの機能を正しく使用する方法を理解している問題があります。私が欲しいものR - dplyrブートストラップの問題

は、例えば、このような手段の違い、2つの無作為割り当てられたグループからのブートストラップ分布を生成して計算することである。

library(dplyr) 
library(broom) 
data(mtcars) 

mtcars %>% 
    mutate(treat = sample(c(0, 1), 32, replace = T)) %>% 
    group_by(treat) %>% 
    summarise(m = mean(disp)) %>% 
    summarise(m = m[treat == 1] - m[treat == 0]) 

問題は、私は、この操作を繰り返す必要があるということですが1001000、またはそれ以上の回数。

replicate使用して、私は本当にここbootstrapを使用する方法を得ることはありません分布

enter image description here

frep = function(mtcars) mtcars %>% 
    mutate(treat = sample(c(0, 1), 32, replace = T)) %>% 
    group_by(treat) %>% 
    summarise(m = mean(disp)) %>% 
    summarise(m = m[treat == 1] - m[treat == 0]) 

replicate(1000, frep(mtcars = mtcars), simplify = T) %>% unlist() 

を行うと、取得することができます。どうすればいいですか?

mtcars %>% 
    bootstrap(10) %>% 
    mutate(treat = sample(c(0, 1), 32, replace = T)) 

mtcars %>% 
    bootstrap(10) %>% 
    do(tidy(treat = sample(c(0, 1), 32, replace = T))) 

実際には機能しません。 bootstrapピップはどこに置く必要がありますか?

ありがとうございました。 doステップ

+0

はいを​​取得することができます!ありがとうございました。これは完璧です。だからあなたは私に説明することができます、私は 'do'の中に' data.frame'を作成しなければなりませんか?あなたはあなたの答えを投稿できますか?再度、感謝します! – giacomo

+1

'treat'という列を作成しているので、 'data.frame'でラップしてdata.frameとして出力します。 '.'は、'%>% 'の' lhs'にあるデータセットの内容を意味します。 – akrun

答えて

2

は、我々はdata.frameで包むと「御馳走」列を作成し、その後、私たちは「複製」と「治療」によってグループがsummarise D出力列

mtcars %>% 
    bootstrap(10) %>% 
    do(data.frame(., treat = sample(c(0,1), 32, replace=TRUE))) %>% 
    group_by(replicate, treat) %>% 
    summarise(m = mean(disp)) %>% 
    summarise(m = m[treat == 1] - m[treat == 0]) 
    #or as 1 occurs second and 0 second, we can also use 
    #summarise(m = last(m) - first(m)) 
関連する問題