Проблема, с которой вы сталкиваетесь, заключается в том, что вы получаете данные различной формы. Вы можете указать форму данных в вашей функции. Посмотрите, если эти ссылки помогают вообще.
Я привел несколько случайных данных в качестве примера.
Var1 = runif(10, 3, 30)
Var2 = runif(10, 2, 5)
Y <- cbind(Var1, Var2)
Age <- runif(10, 20, 30)
Sex <- gl(2, 5, labels = c("male", "female"))
df <- as.data.frame(cbind(Y, Age, Sex))
df$Sex <- as.factor(df$Sex)
stat_test_func <- function(x, indices) {
x$Var1 <- x$Var1[indices]
model <- glm(Var1 + Var2 ~ Sex*Age, data = x)
return(coefs = coef(model))
}
bs.out <- boot(df, statistic = stat_test_func, R = 10, sim = "parametric")
> bs.out
PARAMETRIC BOOTSTRAP
Call:
boot(data = df, statistic = stat_test_func, R = 10, sim = "parametric")
Bootstrap Statistics :
original bias std. error
t1* 131.650088 0 0
t2* -132.423883 0 0
t3* -4.659926 0 0
t4* 5.804188 0 0
Редактировать
Прочитав еще ?boot
, похоже, что для параметрической начальной загрузки вам необходимо предоставить функцию случайной генерации ran.gen
. Но у меня возникли проблемы с той же ошибкой. Может случиться так, что каждый бутстрап неравен, т.е. факторы не равны, но я не уверен. Снятие возраста не изменило его.
stat_test_func <- function(x) {
mancova(x, deps = c("Var1", "Var2"), factors = "Sex", multivar = "pillai")
}
stat_test_rg <- function(x, mle) {
out <- x
out$Var1 <- rexp(nrow(out), 1/mle)
out$Var2 <- rexp(nrow(out), 1/mle)
out
print(out)
}
bs.out <- boot(df, statistic = stat_test_func, R = 10, sim = "parametric", ran.gen = stat_test_rg, mle = mean(df$Var1))
Error in t.star[r, ] <- res[[r]] :
number of items to replace is not a multiple of replacement length
Если вы рассматриваете возраст как фактор, я получаю другую ошибку . Так что этот ответ, возможно, уже не так полезен.
Var1 = runif(10, 3, 30)
Var2 = runif(10, 2, 5)
Age <- gl(2, 5, labels = c("young", "old"))
# Age <- runif(10, 20, 30)
Sex <- gl(2, 5, labels = c("male", "female"))
Y <- cbind(Var1, Var2)
df <- as.data.frame(cbind(Y, Age, Sex))
df$Sex <- as.factor(df$Sex)
df$Age <- as.factor(df$Age)
Error: Table$setRow(): value 'stat[pillai]' is not atomic