2017-09-15 37 views
1

加權平均我知道如何引導向量的平均值:引導R中

library(boot) 
samplemean <- function(x, d) { 
    return(mean(x[d])) 
} 
results_qsec <- boot(data=mtcars$qsec, statistic = samplemean, R=1000) 

,但我怎麼引導的加權平均值,考慮到例如值在mtcars$qsec和這些值的權重是mtcars$wt

回答

1

訣竅是將weighted.mean的權重指定爲參數的一部分,以boot。這裏我使用j作爲權重,並將其作爲數據幀傳遞,以匹配data =參數。

在這裏你去:

samplewmean <- function(d, i, j) { 
    d <- d[i, ] 
    w <- j[i, ] 
    return(weighted.mean(d, w)) 
    } 

results_qsec <- boot(data= mtcars[, 7, drop = FALSE], 
        statistic = samplewmean, 
        R=10000, 
        j = mtcars[, 6 , drop = FALSE]) 

回報:

ORDINARY NONPARAMETRIC BOOTSTRAP 


Call: 
boot(data = mtcars[, 7, drop = FALSE], statistic = samplewmean, 
    R = 10000, j = mtcars[, 6, drop = FALSE]) 


Bootstrap Statistics : 
    original  bias std. error 
t1* 17.75677 0.0006948823 0.3046888 

比較:

weighted.mean(mtcars[,7], mtcars[,6]) 
[1] 17.75677 
+1

哈哈剛剛看到了這一點。謝謝 :) –

1

方法如下:

samplewmean <- function(data, d) { 
    return(weighted.mean(x=data[d,1], w=data[d,2])) 
} 

results_qsec <- boot(data=mtcars[,c(7,6)], statistic = samplewmean, R=1000)