Создание функции R с использованием рандомизированного теста различий - PullRequest
0 голосов
/ 23 апреля 2019

Напишите функцию, которая позволит пользователю ввести вектор числовых значений, без пропущенных значений «данные», и вектор 1 и 2, представляющий две разные группы, которые вы хотите сравнить. «лечение». Количество 1 и 2 не обязательно должно быть одинаковым. Вы можете предположить на данный момент, что лечение 2 имеет более высокое среднее чем лечение 1.

Функция создаст рандомизацию Распределение различий и сюжет их в гистограмме. Будет использовать дистрибутив рассчитать р-значение - вероятность того, что наблюдаемая разница (или выше) может иметь произошло случайно. Это напечатает наблюдаемое разница и значение р, оба округляется до 4 цифр с использованием текста:
«Наблюдаемая разница - хххх, а р-значение хххх "

Используя эти два вектора, я определил, как получить различия, но не знаю, как поместить это в функцию и выполнить тест рандомизации.

dat<- c(1,4,2,5,2,4,8,6,9,7) trt <- c(1,1,1,1,1,2,2,2,2,2)

Как найти наблюдаемую разницу: obsdiff <- mean(dat[trt == 2]) - mean(dat[trt == 1]) Как «перетасовать процедуры»: trtsh <- sample(trt, size = length(trt))

Как найти разницу смоделированной в соответствии с нулевой гипотезой, то есть разница в средствах для перемешивания лечение 2 минус лечение 1: simdiff <- mean(dat[trtsh == 2]) - mean(dat[trtsh == 1])

Значение p с использованием этих векторов должно быть 0,011

.

1 Ответ

0 голосов
/ 23 апреля 2019
dat<- c(1,4,2,5,2,4,8,6,9,7)
trt <- c(1,1,1,1,1,2,2,2,2,2)

В целом, хорошая идея привести все ваши данные в фрейм данных, например

data.frame(dat, trt) -> mydata

Теперь вы можете вычислить ваш obsdiff как

obsdiff <- mean(mydata$dat[mydata$trt == 2]) - mean(mydata$dat[mydata$trt == 1])

Вот один способ, которым вы можете перетасовать значения обработки, используя цикл for:

simdiff <- vector(length=10000)
for(j in 1:10000){

 cat(paste(j, '\n') )

 trtsh <- sample(trt)
 mydatash <- data.frame(dat, trtsh)
 simdiff[j] <- mean(mydatash$dat[mydatash$trt == 2]) - mean(mydatash$dat[mydatash$trt == 1])

}

Для получения справки по построению графика см. ?hist (например, hist(simdiff)).

Теперь вам нужно просто обернуть вышеупомянутые фрагменты в функцию, которая вычисляет квантиль simdiff, где obsdiff> = simdiff, и выводит текст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...