Моя цель - использовать загрузку (1000 повторений) для вычисления нулевого распределения, среднего и CI коэффициента корреляции (Pearson) корреляции (x) в 20 стимулированных случайных пар, генерируемых из моего набора данных из 600 уникальных людей (ID). Недавно я переключился на R из SAS, где я бы использовал «proc surveyselect» для создания набора данных. Вопросы:Имитированный набор данных для анализа обвязки ботинком
- Что было бы самым эффективным способом генерации этих результатов (см. Мою попытку ниже)?
- В моем примере, как я могу использовать команду set.seed для репликации моих результатов?
смоделированные начиная набора данных с 600 лиц и связанных с ними признака значений:
ID <- seq(1, 600, by = 1)
x <- rnorm(600, m = 7, sd = 2)
X <- as.data.frame(cbind(ID, x))
Я тогда генерируют мои 1000 повторов г и вычислить 95% ДИ:
for (i in 1:1000) {
X.sample <- X[ sample(1:nrow(X), 40, replace = FALSE), ]
X.sample.1 <- X.sample[1:20, ]
X.sample.2 <- X.sample[21:40, ]
Y <- as.data.frame(cbind(X.sample.1$ID, X.sample.1$x, X.sample.2$ID, X.sample.2$x))
cor.results <- cor.test(Y[,2], Y[,4], alternative = c("greater"), method = c("pearson"))
Z[i] <- cor.results$estimate
}
error <- qt(0.975, df = (length(Z) - 1)) * (sd(Z))/sqrt(length(Z))
Всего несколько комментариев для краткости кода ... Столбец 'ID' отображается здесь посторонним, но если вы этого хотите,' ID <- 1: 600' будет делать трюк. Я не вижу причин использовать «data.frame» в этом случае, так как ваши «ID» и «x» - это один и тот же тип данных (числовой). Насколько мне известно, операции 'matrix', как правило, быстрее, чем операции data.frame. См. Мое решение ниже для некоторых других таймеров. – jbaums