Рассчитать доверительный интервал для среднего бета-распределения


12

Рассмотрим бета-распределение для данного набора рейтингов в [0,1]. После расчета среднего значения:

μ=αα+β

Есть ли способ обеспечить доверительный интервал вокруг этого среднего значения?


1
Доминик - вы определили среднее население . Доверительный интервал будет основан на некоторой оценке этого среднего значения. Какой образец статистики вы используете?
Glen_b

Glen_b - Привет, я использую набор нормализованных оценок (продукта) в интервале [0,1]. То, что я ищу, - это оценка интервала вокруг среднего значения (для данного уровня достоверности), например: среднее + - 0,02
доминирование

2
Доминик: Позвольте мне попробовать еще раз. Вы не знаете, что значит население . Если вы хотите, чтобы оценка находилась посередине вашего интервала ( полуширина оценки , как в вашем комментарии), вам потребуется некоторая оценка для этого количества в среднем порядке, чтобы поместить интервал вокруг него. Что вы используете для этого? Максимальная вероятность? Метод моментов? что-то другое? ±
Glen_b

Glen_b - спасибо за ваше терпение. Я собираюсь использовать MLE
Доминик

2
Dominic; в этом случае при больших можно использовать асимптотические свойства оценок максимального правдоподобия; оценка ML будет асимптотически нормально распределяться со средним значением и стандартной ошибкой, которая может быть рассчитана из информации Фишера . В небольших выборках иногда можно рассчитать распределение MLE (хотя в случае с бета-версией мне кажется, что это сложно); альтернатива состоит в том, чтобы смоделировать распределение в соответствии с размером вашей выборки, чтобы понять его поведение там. nμμ
Glen_b

Ответы:


22

Хотя существуют конкретные методы для расчета доверительных интервалов для параметров в бета-распределении, я опишу несколько общих методов, которые можно использовать для (почти) всех видов распределений , включая бета-распределение, и которые легко реализуются в R ,

Профиль вероятности доверительных интервалов

Начнем с оценки максимального правдоподобия с соответствующими доверительными интервалами правдоподобия профиля. Для начала нам нужны примеры данных:

# Sample size
n = 10

# Parameters of the beta distribution
alpha = 10
beta = 1.4

# Simulate some data
set.seed(1)
x = rbeta(n, alpha, beta)

# Note that the distribution is not symmetrical
curve(dbeta(x,alpha,beta))

Функция плотности вероятности для бета-распределения.

Реальное / теоретическое среднее

> alpha/(alpha+beta)
0.877193

Теперь нам нужно создать функцию для вычисления функции отрицательного логарифмического правдоподобия для выборки из бета-распределения со средним значением в качестве одного из параметров. Мы можем использовать dbeta()функцию, но поскольку в ней не используется параметризация, включающая среднее значение, мы должны выразить ее параметры ( α и β ) как функцию среднего значения и некоторый другой параметр (например, стандартное отклонение):

# Negative log likelihood for the beta distribution
nloglikbeta = function(mu, sig) {
  alpha = mu^2*(1-mu)/sig^2-mu
  beta = alpha*(1/mu-1)
  -sum(dbeta(x, alpha, beta, log=TRUE))
}

Чтобы найти оценку максимального правдоподобия, мы можем использовать mle()функцию в stats4библиотеке:

library(stats4)
est = mle(nloglikbeta, start=list(mu=mean(x), sig=sd(x)))

Просто игнорируйте предупреждения на данный момент. Они вызваны тем, что алгоритмы оптимизации пытаются использовать недопустимые значения для параметров, давая отрицательные значения для α и / или β . (Чтобы избежать предупреждения, вы можете добавить lowerаргумент и изменить используемую оптимизацию method.)

Теперь у нас есть и оценки, и доверительные интервалы для наших двух параметров:

> est
Call:
mle(minuslogl = nloglikbeta, start = list(mu = mean(x), sig = sd(x)))

Coefficients:
        mu        sig 
0.87304148 0.07129112

> confint(est)
Profiling...
         2.5 %    97.5 %
mu  0.81336555 0.9120350
sig 0.04679421 0.1276783

Обратите внимание, что, как и ожидалось, доверительные интервалы не являются симметричными:

par(mfrow=c(1,2))
plot(profile(est)) # Profile likelihood plot

Профиль вероятностного участка для бета-распределения.

(Вторые внешние пурпурные линии показывают 95% доверительный интервал.)

Также обратите внимание, что даже при всего 10 наблюдениях мы получаем очень хорошие оценки (узкий доверительный интервал).

В качестве альтернативы mle()вы можете использовать fitdistr()функцию из MASSпакета. Это также вычисляет оценку максимального правдоподобия и имеет то преимущество, что вам нужно только указать плотность, а не отрицательное логарифмическое правдоподобие, но не дает вам доверительные интервалы вероятности профиля, только асимптотические (симметричные) доверительные интервалы.

Лучшим вариантом является mle2()(и связанные с ним функции) из bbmleпакета, который является несколько более гибким и мощным, чем mle(), и дает немного более приятные графики.

Доверительные интервалы начальной загрузки

Другим вариантом является использование начальной загрузки. Его очень легко использовать в R, и вам даже не нужно предоставлять функцию плотности:

> library(simpleboot)
> x.boot = one.boot(x, mean, R=10^4)
> hist(x.boot)                # Looks good
> boot.ci(x.boot, type="bca") # Confidence interval
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 10000 bootstrap replicates

CALL : 
boot.ci(boot.out = x.boot, type = "bca")

Intervals : 
Level       BCa          
95%   ( 0.8246,  0.9132 )  
Calculations and Intervals on Original Scale

Дополнительным преимуществом начальной загрузки является то, что она работает, даже если ваши данные не поступают из бета-версии.

Асимптотические доверительные интервалы

Для доверительных интервалов в среднем давайте не будем забывать старые добрые асимптотические доверительные интервалы, основанные на центральной предельной теореме (и t -распределении). Пока у нас либо большой размер выборки (так что применяется CLT и распределение среднего значения выборки приблизительно нормальное), либо большие значения как α, так и β (так что само бета-распределение является приблизительно нормальным), это работает хорошо. Здесь у нас нет ни того, ни другого, но доверительный интервал все еще не так уж и плох:

> t.test(x)$conf.int
[1] 0.8190565 0.9268349

Для незначительно больших значений n (и не слишком экстремальных значений двух параметров) асимптотический доверительный интервал работает исключительно хорошо.


Спасибо, Карл. Быстрый вопрос: как вы определили альфа и бета? Я использовал дисперсию и среднее значение выборки, чтобы получить альфа и бета, но я думаю, что, возможно, я перепутал среднее значение выборки со средним значением популяции, так что я не уверен, что сделал правильный путь ... см. Комментарий Glen_b выше ,
Доминик

Чтобы определить α и β как функции от среднего и стандартного отклонения, я просто инвертировал функции для среднего и стандартного отклонения как функции от α и β (но я уверен, что вы также можете посмотреть его в сети).
Карл Ове Хуфтхаммер

+1 Карл. У меня похожий вопрос, учитывая , среднее значение и дисперсию бета-распределения, есть ли способ оценить доверительный интервал среднего значения. Например, в обычном дистрибутиве мы могли бы легко это сделать, но я не знаю, как вы можете сделать этот бета-дистрибутив. Я поднял вопрос , но он был отмечен как дубликат. α,β
синоптик

0

Проверьте Бета-регрессию. Хорошее введение в то, как сделать это с помощью R, можно найти здесь:

http://cran.r-project.org/web/packages/betareg/vignettes/betareg.pdf

Другим (действительно простым) способом построения доверительного интервала было бы использование непараметрического подхода бустрапа. Википедия имеет хорошую информацию:

http://en.wikipedia.org/wiki/Bootstrapping_%28statistics%29

Также хорошее видео здесь:

http://www.youtube.com/watch?v=ZCXg64l9R_4

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.