2016-11-02 11 views
-7

В R Я имею матрицу из 47 строк и 30 столбцов. Каждая ячейка содержит числовое значение (от 0,0 до 1,0). Некоторые ячейки имеют «NA» вместо численного значения.Возьмите один образец за строку за раз, вычислите среднее, цикл

Это то, что я хотел бы сделать:

  1. Для каждой строки, одного образца случайного значения, пока все 47 строк не отбирало один раз. Можно выбрать только числовые значения (NA следует игнорировать).
  2. Возьмите эти 47 значений, вычислите среднее значение и сохраните среднее значение.
  3. Повторите этот процесс 10 000 раз с заменой.
  4. Определите интервал 95% (2,5% -97,5%) из этих 10000 средств.
  5. Настройте гистограмму из 10000 средств, показывающих границы интервала 2,5% и 97,5%.
  6. Определите, попадает ли наблюдаемое значение внутрь или за пределы границ.
  7. Вычислить значение P наблюдаемого среднего значения.

Важно, что из каждой строки (случайным образом) извлекается только один образец и каждая строка выбирается один раз на каждой итерации.

Надеюсь, я не прошу слишком много :-) Я ценю любую помощь!

+0

Причина, по которой вы получаете так много голосов, состоит в том, что вы в основном предоставляете нам задание, а не задаете вопрос. У вас должен быть пример ваших данных (используя 'dput' или код для его создания, как в моем ответе ниже), а также ваши попытки решить проблему и где вы застряли. Кроме того, тот факт, что вы просите о стольких вещах, кажется, что вы не пытались решить эту проблему самостоятельно (т.е. понятно, что нужно бороться с 1, но как только у вас есть 4, 6 действительно легко, и вы должны быть в состоянии сделать это это сам). – Barker

+0

Спасибо, Баркер. Я понимаю ваш вопрос, и я признаю, что было грустно видеть так много голосов, прежде чем ваш ответ был отправлен.Ваш ответ был большим облегчением. В следующий раз я буду более конкретным. Действительно ценю это! – pbc

+0

Нет проблем. Если мой ответ решит вашу проблему, вы должны принять его. – Barker

ответ

0

Первый позволяет сделать так, данные эксперименты с

set.seed(100) 
example <- matrix(runif(47*30), nrow = 47) 
example[sample(length(example), 250)] <- NA 

Теперь мы можем рассчитать наши средства. Функция apply отображает случайное значение из каждой строки (!is.na не включает значения NA), mean получает среднее значение, а replicate повторяет это 10000 раз.

exmeans <- replicate(10000, mean(apply(example, 1, 
           function(x) sample(x[!is.na(x)], 1)))) 

Доверительные интервалы могут быть рассчитаны двумя различными способами. Первый использует этот пример как эмпирическое распределение и вычисляет среднее из этого, второе использует нормальное распределение для вычисления вероятностей.

confint <- quantile(exmeans, c(0.025, 0.975)) 
confint <- qnorm(c(0.025, 0.975), mean = mean(exmeans), sd = sd(exmeans)) 

Далее участки вы хотели

hist(exmeans) 
abline(v = confint, col = "red") 

histogram of quantiles

Наконец информация р-значение. Еще раз мы можем использовать эмпирическое распределение или нормальное распределение. Они обеспечивают p-значения для нижних хвостов распределения, используйте 1 - result для верхних хвостов.

newvalue > confint[1] & newvalue < confint[2] 
ecdf(exmeans)(newvalue) 
pnorm(newvalue, mean = mean(exmeans), sd = sd(exmeans))