Я использую начальную загрузку, чтобы получить 95% CI для средних расчетов для нескольких единиц оценки (EU). Расчет без бутстрапа
Распространенность ЕС = сумма (распространенность кластера)/количество кластеров
Теперь пример проблемы заключается в том, что в некоторых ЕС есть 25 кластеров, а в некоторых - 30. Пожалуйста, помогите мне добавить код в цикл, чтобы автоматически использовать правильное количество кластеров в расчетах на основе кода ЕС и связи. в другую таблицу — см. строку 10 (я все время думаю о ВПР в Excel).
Таблица «набор данных» сгруппирована по EU&Cluster и содержит значения распространенности на уровне кластера. Вот пример того, как это будет выглядеть:
eu cluster cluster_prev
640 1 0.23
640 2 0.78
...
640 25 0.78
678 1 0.97
...
678 27 1.2
681 1 0
...
681 31 0.78
Затем есть таблица под названием «cluster_count», которая сгруппирована по ЕС и имеет 2 столбца: EU и cluster_ct (количество кластеров в ЕС)... это та часть, которую я не могу понять, как включить. Вот пример того, как будет выглядеть cluster_count:
EU cluster_ct
640 25
678 27
681 31
Вот код:
#Load, transform data
dataset <- read.csv("ttprev_cluster.csv")
str(dataset)
dataset$eu <- as.factor(dataset$EU)
dataset$cluster <- as.factor(dataset$CLUSTER)
dataset$cluster_prev <- dataset$adj_tt
#Boot statistic function
clustermean <- function(df, i) {
#this is the number that I want to replace with code
num_clusters <- 25
r <- round(runif(num_clusters, 1, nrow(df)))
df2 <- numeric()
for (i in 1:num_clusters)
df2[i] <- df[r[i],]$cluster_prev
return(mean(df2))
}
#create empty data frame for results
bootResult <- data.frame(eu=character(), bootmean=numeric(), se=numeric(), ci95_low=numeric(), ci95_high=numeric(), stringsAsFactors=FALSE)
#Bootstrap function, looped over each EU
library(boot)
num_reps <- 10000
for (i in 1:nlevels(dataset$eu)) {
data2 <- subset(dataset, eu==levels(eu)[i])
b <- boot(data2, clustermean, num_reps)
m <- mean(b$t)
se <- sd(b$t)
#calculate 2.5/97.5 percentiles as Confidence Interval
q <- quantile(b$t, c(0.025, 0.975))
ci_lower <- q[1]
ci_upper <- q[2]
}