Тестирование доверительных интервалов в R - PullRequest
0 голосов
/ 23 ноября 2018

В настоящее время я построил 95% доверительный интервал и затем использовал replicate() для случайной генерации 1000 доверительных интервалов.Я хочу измерить, сколько интервалов содержит мое среднее значение.Я знаю, что в теории это должно быть в 950 из них, но как я могу получить определенный ответ?Функция, которую я использовал, и среднее значение перечислены ниже.

z <- function(a,b,c){
  error <- rnorm(a, b, c) * c / sqrt(a) 
  left <- b - error
  right <- j + error
  paste("[",round(left,2),";",round(right,2),"]") 
}

set.seed(123)
replicate(1000, z(10,1,1))

Куда мне идти отсюда?

1 Ответ

0 голосов
/ 23 ноября 2018

Может быть, это то, что вы пытаетесь сделать?

Это z() вернет доверительный интервал для среднего значения нормального распределения для населения.

z <- function(N, mu, std, cl=95) {
    alpha <- (1-cl/100)/2

    # CI for population mean
    sep <- std/sqrt(N)
    z_s <- qnorm(1 - alpha)
    pop_lower <- mu - z_s*sep
    pop_upper <- mu + z_s*sep

    c(lower=pop_lower, upper=pop_upper)
}

Это означает, что еслиЯ создаю случайную переменную mean(rnorm(20, 0, 1)), затем мы ожидаем, что ее значение лежит в пределах z(20, 0, 1, 95) с вероятностью 0,95.

Чтобы проверить это, мы можем сделать

# specify parameters
N <- 20
mu <- 0
std <- 1

# produce a good number (10,000) of population means
set.seed(1)
r <- replicate(1e4, mean(rnorm(N, mu, std)))

# calculate confidence interval
ci <- z(N, mu, std)

# find which are below, within and above the interval
rc <- cut(r, c(min(r), ci, max(r)), c("below", "within", "above"))

# create a proportion table
round(prop.table(table(rc))*100, 2)

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