2013-08-20 2 views
8

나는 값이 배열이 있습니다R은 부트 스트랩 사용하여 표준 오차를 계산

> df 
[1] 2 0 0 2 2 0 0 1 0 1 2 1 0 1 3 0 0 1 1 0 0 0 2 1 2 1 3 1 0 0 0 1 1 2 0 1 3 
[38] 1 0 2 1 1 2 2 1 2 2 2 1 1 1 2 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 
[75] 0 0 0 0 0 1 1 0 1 1 1 1 3 1 3 0 1 2 2 1 2 3 1 0 0 1 

나는 데이터의 표준 오차를 계산하기 위해 패키지 부팅을 사용하고자합니다. http://www.ats.ucla.edu/stat/r/faq/boot.htm

그래서, 내가 추구하는이 명령을 사용 :

library(boot) 
boot(df, mean, R=10) 

을하고이 오류가있어 :

Error in mean.default(data, original, ...) : 
'trim' must be numeric of length one 

누군가가 나에게 문제를 알아내는 데 도움이 수 있습니까? 감사합니다

+1

'c'에 대한 기능 정의는 무엇입니까? 기본'c' 함수는 부트 스트랩에 적합하지 않습니다. – Frank

답변

11

당신이 평균 부트 스트랩하는 경우 다음과 같이 할 수있다 :

set.seed(1) 
library(boot) 
x<-rnorm(100) 
meanFunc <- function(x,i){mean(x[i])} 
bootMean <- boot(x,meanFunc,100) 
>bootMean 

ORDINARY NONPARAMETRIC BOOTSTRAP 


Call: 
boot(data = x, statistic = meanFunc, R = 100) 


Bootstrap Statistics : 
    original  bias std. error 
t1* 0.1088874 0.002614105 0.07902184 

하면 방금 입력 당신이 가지고있는 것과 같은 오류를 얻을 것이다 인수로 mean :

bootMean <- boot(x,mean,100) 
Error in mean.default(data, original, ...) : 
    'trim' must be numeric of length one 
1

함수 cboot에 충분하지 않습니다. boot에 대한 도움말을 보면 함수가 데이터와 색인을 수신 할 수 있어야합니다. 그래서, 당신은 당신 자신의 함수를 작성할 필요가 있습니다. 또한 평균과 같은 표준 오류를 원하는 값을 반환해야합니다.

3

에게 나는 그것이 테이블에 무엇을 가져올 지 이해하지 못하기 때문에 부트를 사용하지 않았습니다. 난 당신이 단순히이 작업이 완료 얻기 위해 다음과 같은 기능을 사용할 수 있다고 생각

sd(sampled.df)/sqrt(length(df))

: 표준 오차는 다음과 같이 정의되는 점을 감안

custom.boot <- function(times, data=df) { 
    boots <- rep(NA, times) 
    for (i in 1:times) { 
    boots[i] <- sd(sample(data, length(data), replace=TRUE))/sqrt(length(data)) 
    } 
    boots 
} 

그런 기대 값을 계산할 수 있습니다 너 자신을 위해서 (일부 샘플 구현의 분포를 얻었으므로) :

# Mean standard error 
mean(custom.boot(times=1000)) 
[1] 0.08998023 

몇 년 후 ...

나는이 더 좋은 생각 :

mean(replicate(times, sd(sample(df, replace=T))/sqrt(length(df)))) 
관련 문제