2013-12-10 24 views
7

Proszę mnie! Doceniam każdą pomoc! Dzięki!Powtórz funkcję ponownego próbkowania przez 1000 razy? Używanie lapply?

Mam problem z powtórzeniem wykonywania powtórnego próbkowania przez 1000 razy. Próbowałem użyć metody replicate(), aby to zrobić, ale nie działa. Czy jest jakaś inna metoda? Czy ktoś może mi pokazać, czy może to zrobić przy użyciu lapply? Po to mój kod:

#sampling 1000 betas0 & 1 (coefficients) from the data 
get.beta=function(data,indices){ 
    data=data[indices,] #let boot to select sample 
    lm.out=lm(y ~ x,data=data) 
    return(lm.out$coefficients) 
} 
n=nrow(data) 
get.beta(data,1:n) 

bootcoe=boot(data,get.beta,R=1000) #generate 1000 random samples 
head(bootcoe$t) #look at the betas 

Z powyższego kodu mogę dostać 1000 betas0 & 1 poprzez losowe pobieranie próbek danych. I chciałbym to zrobić 1000 razy, aby uzyskać różne bety. Jak mam to zrobić oprócz replicate()?

+0

Więc 'kopią (1000 {your_codez})' nie działa? –

+0

ya, próbowałem rep (1000, funkcja()), ale nie można uzyskać wyniku. – user2978129

+0

Nie powiedziałem, aby użyć 'function()'. Powinieneś używać nawiasów klamrowych. –

Odpowiedz

19

To jest bardziej rozszerzony komentarz, w którym wykazuję, że powinien działać replicate. Oto przykład CLT. Po prostu zamień linie, które znajdują się między nawiasami klamrowymi.

x <- replicate(1000, { 
    mm <- runif(10) 
    mean(mm) 
    }) 
hist(x) 

enter image description here

+0

Dzięki @Roman. Więc w moim przypadku, co powinienem umieścić w {}? Próbowałem umieścić get.beta, ale daje błędy i ma bootcoe działa przez długi czas. Umieszczenie zarówno get.beta, jak i bootcoe daje błąd ponownie. – user2978129

+0

Ponadto, dlaczego istnieje średnia (mm) na końcu? Dzięki ! – user2978129

+0

@ user2978129 Ostatnia linia jest wynikiem twojej funkcji. Powinieneś umieścić między nawiasami klamrowymi to, co chcesz ocenić ... n 'razy. –