Calcular el intervalo de confianza para la media de una distribución beta

12

Considere una distribución beta para un conjunto dado de clasificaciones en [0,1]. Después de haber calculado la media:

μ=αα+β

¿Hay alguna manera de proporcionar un intervalo de confianza en torno a este medio?

dominic
fuente
1
dominic: has definido la media de la población . Un intervalo de confianza se basaría en alguna estimación de esa media. ¿Qué estadística de muestra estás usando?
Glen_b -Reinstate Monica
Glen_b - Hola, estoy usando un conjunto de clasificaciones normalizadas (de un producto) en el intervalo [0,1]. Lo que estoy buscando es una estimación de un intervalo alrededor de la media (para un nivel de confianza dado), por ejemplo: media + - 0.02
dominical
2
Dominic: Déjame intentarlo de nuevo. No sabes la media de la población . Si desea que una estimación se ubique en el medio de su intervalo ( estimación medio ancho , como en su comentario), necesitaría algún estimador para esa cantidad en el orden medio para colocar un intervalo a su alrededor. ¿Qué estás usando para eso? ¿Máxima verosimilitud? Método de momentos? ¿algo más? ±
Glen_b -Reinstate Monica
Glen_b: gracias por tu paciencia. Voy a usar MLE
dominic
2
dominico en ese caso, para grande se usarían las propiedades asintóticas de los estimadores de máxima verosimilitud; la estimación de ML de se distribuirá asintóticamente normalmente con media y error estándar que se puede calcular a partir de la información de Fisher . En muestras pequeñas, a veces se puede calcular la distribución de la MLE (aunque en el caso de la versión beta, creo recordar que es difícil); Una alternativa es simular la distribución en el tamaño de la muestra para comprender su comportamiento allí. μ μnμμ
Glen_b -Reinstate Monica

Respuestas:

22

Si bien existen métodos específicos para calcular los intervalos de confianza para los parámetros en una distribución beta, describiré algunos métodos generales, que se pueden usar para (casi) todo tipo de distribuciones , incluida la distribución beta, y se implementan fácilmente en R .

Intervalos de confianza de probabilidad de perfil

Comencemos con la estimación de máxima verosimilitud con los correspondientes intervalos de confianza de verosimilitud de perfil. Primero necesitamos algunos datos de muestra:

# 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))

Función de densidad de probabilidad para la distribución beta.

La media real / teórica es

> alpha/(alpha+beta)
0.877193

Ahora tenemos que crear una función para calcular la función de probabilidad de registro negativa para una muestra de la distribución beta, con la media como uno de los parámetros. Podemos usar la dbeta()función, pero como esto no usa una parametrización que involucre la media, tenemos que expresar sus parámetros ( α y β ) en función de la media y algún otro parámetro (como la desviación estándar):

# 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))
}

Para encontrar la estimación de máxima verosimilitud, podemos usar la mle()función en la stats4biblioteca:

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

Simplemente ignore las advertencias por ahora. Son causados ​​por los algoritmos de optimización que prueban valores no válidos para los parámetros, dando valores negativos para α y / o β . (Para evitar la advertencia, puede agregar un lowerargumento y cambiar la optimización methodutilizada).

Ahora tenemos estimaciones e intervalos de confianza para nuestros dos parámetros:

> 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

Tenga en cuenta que, como se esperaba, los intervalos de confianza no son simétricos:

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

Gráfico de probabilidad de perfil para la distribución beta.

(Las segundas líneas magentas externas muestran el intervalo de confianza del 95%).

También tenga en cuenta que incluso con solo 10 observaciones, obtenemos estimaciones muy buenas (un intervalo de confianza estrecho).

Como alternativa a mle(), puede usar la fitdistr()función del MASSpaquete. Esto también calcula el estimador de máxima verosimilitud, y tiene la ventaja de que solo necesita suministrar la densidad, no la probabilidad de registro negativa, pero no le da intervalos de confianza de verosimilitud de perfil, solo intervalos de confianza asintóticos (simétricos).

Una mejor opción es mle2()(y las funciones relacionadas) del bbmlepaquete, que es algo más flexible y potente que mle(), y ofrece gráficos un poco más agradables.

Intervalos de confianza Bootstrap

Otra opción es usar el bootstrap. Es extremadamente fácil de usar en R, y ni siquiera tiene que proporcionar una función de densidad:

> 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

El programa de arranque tiene la ventaja adicional de que funciona incluso si sus datos no provienen de una distribución beta.

Intervalos de confianza asintóticos

Para intervalos de confianza en la media, no olvidemos los viejos intervalos de confianza asintóticos basados ​​en el teorema del límite central (y la distribución t ). Siempre que tengamos un tamaño de muestra grande (por lo que se aplica el CLT y la distribución de la media de la muestra es aproximadamente normal) o valores grandes tanto de α como de β (para que la distribución beta en sí sea aproximadamente normal), funciona bien. Aquí no tenemos ninguno, pero el intervalo de confianza aún no es tan malo:

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

Para valores ligeramente mayores de n (y valores no demasiado extremos de los dos parámetros), el intervalo de confianza asintótico funciona extremadamente bien.

Karl Ove Hufthammer
fuente
Gracias Karl Pregunta rápida: ¿cómo determinaste tu alfa y beta? Utilicé la varianza y la media de la muestra para obtener alfa y beta, pero creo que podría haber confundido la media de la muestra con la media de la población, así que no estoy seguro de haberlo hecho de la manera correcta ... vea el comentario de Glen_b arriba .
Dominic
Para determinar α y β como funciones de la media y la desviación estándar, simplemente invertí las funciones para la media y las desviaciones estándar como funciones de α y β (pero estoy seguro de que también puede buscarlo en la red).
Karl Ove Hufthammer
α,β