从矩阵创建Bootstrapped Means和CI

时间:2014-07-06 18:18:59

标签: r matrix boot mean

我有以下矩阵(让我们称之为df),由于加权分布很大,我想为每个列创建自举均值和95%置信区间。我希望将均值和CI作为新行添加到矩阵的底部。这是数据的一小部分,真实数据有> 600行,这将使自举更加有效。

row.names   V183    V184    V185    V186    V187    V188    V189    V190    V191    V192    V193    V194    V195    V196    V197    V198    V199    V200    V201    V202    V203    V204    V205
1   0.07142857  0.07142857  0.07142857  0.07142857  0.07142857  0.07142857  0.07142857  0.07142857  0.07692308  0.07692308  0.07692308  0.07692308  0.07692308  0.07692308  0.07692308  0.07692308  0.07692308  0.07692308  0.07692308  0.07692308  0.07692308  NA  NA
2   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
3   0.022   0.022   0.022   0.022   0.022   0.022   0.022   0.022   0.022   0.022   0.022   0.022   0.022   0.022   0.022   0.022   0   NA  NA  NA  NA  NA  NA
4   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0.07692308  0.07692308  0.07692308  0.07692308  0.07692308  0.07692308  0.07692308  0.07692308
5   0   0   0   0   0.066   0.066   0.066   0.066   0.066   0.066   0.066   0.066   0.066   0.066   0   0   0   0   0   0   0   0   0
6   0.077   0.077   0.077   0.077   0.077   0.077   0.077   0.077   0.077   0.077   0.077   0.077   0.077   0.077   0.077   0.077   0.077   0.077   0.077   0   0   0   0
7   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
8   0.07142857  0.07142857  0.07142857  0.07142857  0.07142857  0.07142857  0.07142857  0.07142857  0.07142857  0.07142857  0.07142857  0   0   0   0   0   0   0   0   0   0   0   0
9   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   NA  NA  NA  NA  NA  NA
10  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
11  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  0.03225806  0.03225806  0.03225806  0.03225806  0.03225806  0.03225806  0.03225806  0.03225806  0.03225806  0.03225806  0.03225806
12  0   0   0   0   0   0   0   0   0   0   0   0   0   NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
13  0   0   0   0   0   0   0   0   0   NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA  NA
14  0   0   0.033   0.033   0.033   0.033   0.033   0.033   0.033   0.033   0.033   0.033   0.033   0.033   0.033   0.033   0.033   0   0   0   0   0   0

我试过这个:

 boot.mean <- function(df,i){boot.mean <- mean(df[i])}
 df["BootMean" ,] <- boot(df, boot.mean, R = 2000)

但是它说&#34;选择了未定义的列

所以我尝试了这个:

 boot.mean <- function(df[1:23],i){boot.mean <- mean(df[i])}
 df["BootMean" ,] <- boot(df, boot.mean, R = 2000)

但它说有一个&#34; [&#34;它并不喜欢。

我最近试过这个:

 n<-length(df)
 B<-1000
 boot.mean <- function(df,i){boot.mean <- mean(df[,i],na.rm = TRUE)}
 df["BootMean" ,] <-for (i in 1:n) {
 boot(df[1:14,i],boot.mean,R=B)
 }

但是我在评估论证时遇到了错误&#39; x&#39;选择功能方法&#39;表示&#39;:df [,i]中的错误:维数不正确&#34;

我需要使用apply函数还是什么?请帮助,大脑正在为这个微不足道的问题而受伤!

*****我已经取得了一些进展,但现在还没有。

我已经能够通过对其进行子集化获得单行的启动均值,但是我无法将na.rm = T函数合并到公式中,因此我还必须手动删除它们。任何人都可以建议添加na.rm fn的方法吗?

df<-subset(dfboot,F_BS_sub[1:323, 1]>=0)
dfa<-df[,1]
dfb<-subset(dfa,V183>=0)
boot.mean <- function(dfb, d) {
  E=dfb[d,]
  return(mean(E))}
b = boot(dfb, boot.mean, R=1000)
b

0 个答案:

没有答案