¿Cómo puedo calcular los parámetros y para una distribución Beta si sé la media y la varianza que quiero que tenga la distribución? Los ejemplos de un comando R para hacer esto serían de gran ayuda.
¿Cómo puedo calcular los parámetros y para una distribución Beta si sé la media y la varianza que quiero que tenga la distribución? Los ejemplos de un comando R para hacer esto serían de gran ayuda.
Respuestas:
Configuré y y resuelto para y . Mis resultados muestran que y
He escrito un código R para estimar los parámetros de la distribución Beta a partir de una media dada, mu y varianza, var:
estBetaParams <- function(mu, var) {
alpha <- ((1 - mu) / var - 1 / mu) * mu ^ 2
beta <- alpha * (1 / mu - 1)
return(params = list(alpha = alpha, beta = beta))
}
Ha habido cierta confusión en torno a los límites de y para cualquier distribución Beta dada, así que aclaremos esto aquí.σ 2
estBetaParams(0.06657, 0.1)
recibo alpha=-0.025
, beta=-0.35
. ¿Cómo es esto posible?
Aquí hay una forma genérica de resolver este tipo de problemas, utilizando Maple en lugar de R. Esto también funciona para otras distribuciones:
with(Statistics):
eq1 := mu = Mean(BetaDistribution(alpha, beta)):
eq2 := sigma^2 = Variance(BetaDistribution(alpha, beta)):
solve([eq1, eq2], [alpha, beta]);
lo que lleva a la solución
Esto es equivalente a la solución de Max.
En R, la distribución beta con parámetros y tiene densidad
,
para , y .
En R, puedes calcularlo por
dbeta (x, forma1 = a, forma2 = b)
En esa parametrización, la media es y la varianza es . Entonces, ahora puedes seguir la respuesta de Nick Sabbe.
¡Buen trabajo!
Editar
Encuentro:
,
y
,
donde y .V = V ( X )
En Wikipedia, por ejemplo, puede encontrar las siguientes fórmulas para la media y la varianza de una distribución beta dada alfa y beta: y Invertir estos (complete en la ecuación inferior) darle el resultado que desea (aunque puede tomar algo de trabajo).
Para una distribución Beta generalizada definida en el intervalo , tiene las relaciones:
que se puede invertir para dar:
dónde
Resuelve la ecuación para o , resolviendo para , obtienes Luego conecta esto en la segunda ecuación y resuelve . Entonces obtienes Que se simplifica a Luego termine de resolver .
Estaba buscando python, pero me topé con esto. Entonces esto sería útil para otros como yo.
Aquí hay un código de Python para estimar los parámetros beta (de acuerdo con las ecuaciones dadas anteriormente):
# estimate parameters of beta dist.
def getAlphaBeta(mu, sigma):
alpha = mu**2 * ((1 - mu) / sigma**2 - 1 / mu)
beta = alpha * (1 / mu - 1)
return {"alpha": 0.5, "beta": 0.1}
print(getAlphaBeta(0.5, 0.1) # {alpha: 12, beta: 12}
Puede verificar los parámetros y importando el paquete.scipy.stats.beta