Создайте функцию для стандартной ошибки процента совокупности в R

Я надеюсь создать формулу в R, которую я смогу использовать для расчета стандартной ошибки оценки процента населения для различных демографических факторов. В моей выборке 1045 человек. Мой фрейм данных называется NHIS1, и, например, я хотел бы вычислить стандартную ошибку для доли белого или латиноамериканского населения. Переменные, которые у меня есть для WHITE и HISP, являются двоичными с индикаторами 0 или 1. Я рассчитал процентное соотношение населения с помощью этого кода:

#sum(NHIS1$WHITE)=637,nrow(NHIS1)=1045, and sum(NHIS1$HISP)=408 (sum(NHIS1$WHITE)/nrow(NHIS1))*100, (sum(NHIS1$HISP)/nrow(NHIS1))*100

Я думал, что моя формула может выглядеть примерно так, как показано ниже, но я не уверен, есть ли лучший способ настроить все это так, чтобы R мог ссылаться на эти пропорции населения выше без того, чтобы я вручную подключал его.

perc_SE=function(p){sqrt((p*(1–p))/1045)}

Спасибо!


person juliah0494    schedule 25.05.2020    source источник
comment
По поводу вашего образца чего-то не хватает. 637 + 408! = 1345.   -  person Gray    schedule 25.05.2020
comment
Да, есть и другие категории гонок для людей, которые я не включил сюда для простоты, я отредактирую и уточню в своем посте! Благодарность   -  person juliah0494    schedule 25.05.2020


Ответы (1)


Вы можете попробовать использовать prop.test таблицы для каждого столбца, что даст вам пропорцию, а также 95% доверительный интервал. Просто умножьте их на 100, чтобы получить проценты:

prop.test(table(NIHS$WHITE))
#> 
#>  1-sample proportions test with continuity correction
#> 
#> data:  table(NIHS$WHITE), null probability 0.5
#> X-squared = 3.6431, df = 1, p-value = 0.0563
#> alternative hypothesis: true p is not equal to 0.5
#> 95 percent confidence interval:
#>  0.4993011 0.5533346
#> sample estimates:
#>         p 
#> 0.5263941 

Если вам нужна простая функция для получения процентов, вы можете сделать это:

proportions <- function(x)
{
 a <- prop.test(table(x))
 data.frame(Proportion = 100 * a$estimate, 
            Lower_CI = 100 * a$conf.int[1], 
            Upper_CI = 100 * a$conf.int[2])
}

Итак, теперь вы можете просто сделать:

proportions(NIHS$WHITE)
#>   Proportion Lower_CI Upper_CI
#> p   52.63941 49.93011 55.33346
person Allan Cameron    schedule 25.05.2020
comment
Большое спасибо! Есть ли способ выделить стандартную ошибку, или мы можем просто получить доверительный интервал? - person juliah0494; 25.05.2020
comment
Если пропорция (диапазон от 0 до 1) или процент (диапазон от 0 до 100) близка к 0,5 или 50%, доверительный интервал не является симметричным, поскольку он основан на биномиальном распределении. Стандартное отклонение подходит для симметричных нормальных распределений. Если вы хотите проигнорировать это, просто используйте sd(p)*sqrt((n-1)*n), который скорректирует стандартное отклонение выборки до стандартного отклонения генеральной совокупности. - person dcarlson; 25.05.2020
comment
Да, @dcarlson, верно, хотя стандартную ошибку можно выразить через логарифмические отношения шансов. Я подозреваю, что OP этого не ищет. - person Allan Cameron; 26.05.2020
comment
Да я вижу. Огромное спасибо! - person juliah0494; 26.05.2020
comment
Извините еще за один вопрос: это вычисляет доверительный интервал 95%? - person juliah0494; 26.05.2020
comment
Да @ juliah0494 - вот что означают Lower_CI и Upper_CI в результатах. - person Allan Cameron; 26.05.2020