Я работаю над заданием для школы и застрял. Мне нужно создать функцию, которая создает рандомизированное распределение различий для двух обработок (1 и 2), которые пользователь вводит как вектор. Также необходимо найти значение p распределения, отсюда и критерий хи-квадрат.
Я написал код, который выглядит так, как будто все будет работать, ЗА ИСКЛЮЧЕНИЕМ Я не могу понять, как заставить simdiff повторяться несколько раз. Это кажется достаточно легким шагом, но я не могу понять это. Я пытался использовать «для (я в 1: 20000)», но я даже не уверен, что это делает, и это не похоже на работу здесь.
C <- function(dat, trt) {
obsdiff <- mean(dat[trt == 2]) - mean(dat[trt == 1])
trtsh <- sample(trt, size = length(trt))
simdiff <- mean(dat[trtsh == 2]) - mean(dat[trtsh == 1])
hist(simdiff)
chisq.test(simdiff)}
}
dat<- c(1,4,2,5,2,4,8,6,9,7)
trt <- c(1,1,1,1,1,2,2,2,2,2)
Кажется, все работает с моим кодом, за исключением того, что я не знаю, как повторить simdiff много раз. Ошибка, которую я получаю при запуске такого кода, заключается в том, что «ошибка в chisq.test (simdiff): записи в x должны быть неотрицательными и конечными». Образцы данных предназначены для тестирования, и значение p этих данных должно быть около 0,11.
Я только что попытался изменить свой код на
simdiff <- mean(dat[trtsh == 2]) - mean(dat[trtsh == 1])
simdiff2 <- replicate(simdiff)
hist(simdiff2)
chisq.test(simdiff2)
но сообщение об ошибке гласит: "hist.default (simdiff2): 'x' должно быть числовым". Кажется, я все ближе, но он все еще не работает