R 从矩阵创建引导平均值和CI
我有下面的矩阵(我们称之为df),我想为每个列创建自举平均值和95%的置信区间,因为权重为0的分布。我希望将平均值和CI作为新行添加到矩阵底部。这是数据的一小部分,真正的数据有>600行,这将使引导更加有效R 从矩阵创建引导平均值和CI,r,matrix,mean,statistics-bootstrap,R,Matrix,Mean,Statistics Bootstrap,我有下面的矩阵(我们称之为df),我想为每个列创建自举平均值和95%的置信区间,因为权重为0的分布。我希望将平均值和CI作为新行添加到矩阵底部。这是数据的一小部分,真正的数据有>600行,这将使引导更加有效 row.names V183 V184 V185 V186 V187 V188 V189 V190 V191 V192 V193 V194 V195 V196 V197 V198 V199
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)
boot.mean <- function(df[1:23],i){boot.mean <- mean(df[i])}
df["BootMean" ,] <- boot(df, boot.mean, R = 2000)
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)
}
boot.表示您没有正确选择矩阵中的列。它应该是平均值(df[,i])
。另外,由于您有NA值,您可能希望mean(df[,i],NA.rm=T)
我认为引导不一定能纠正数据大小的限制。对于12°的样本大小,要求95%的ile意味着什么?嗨,对不起,这是一个来自>600行数据集的样本数据集。我在第一段提到了这一点,但我本应该更清楚。我正在尝试应用MrFlick的建议,因为他是完全正确的,但我仍然无法使其发挥作用。我现在尝试了多种方法,包括for循环和MrFlicks建议,但我仍然选择了“undefined columns selected”(未定义的列)。关于这方面的任何建议??我已经取得了一些进展,如上所示,但我不确定如何在新公式中包含na.rm函数。然后,我将尝试为新公式创建一个for循环,并将其应用于矩阵。请在原始帖子中查找******,了解我最新突破的代码
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