Como posso calcular os parâmetros e para uma distribuição Beta, se eu souber a média e a variação que quero que a distribuição tenha? Exemplos de um comando R para fazer isso seriam mais úteis.β
Como posso calcular os parâmetros e para uma distribuição Beta, se eu souber a média e a variação que quero que a distribuição tenha? Exemplos de um comando R para fazer isso seriam mais úteis.β
Respostas:
I definida e e resolvido para e . Meus resultados mostram que e
Eu escrevi um código R para estimar os parâmetros da distribuição Beta de uma determinada média, mu e variância, 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))
}
Houve alguma confusão em torno dos limites de e para qualquer distribuição Beta, então vamos deixar isso claro aqui.
estBetaParams(0.06657, 0.1)
recebo . Como isso é possível? alpha=-0.025
beta=-0.35
Aqui está uma maneira genérica de resolver esses tipos de problemas, usando o Maple em vez de R. Isso também funciona para outras distribuições:
with(Statistics):
eq1 := mu = Mean(BetaDistribution(alpha, beta)):
eq2 := sigma^2 = Variance(BetaDistribution(alpha, beta)):
solve([eq1, eq2], [alpha, beta]);
o que leva à solução
Isso é equivalente à solução de Max.
Em R, a distribuição beta com parâmetros e tem densidade
,
para , e .
Em R, você pode calculá-lo
dbeta (x, forma1 = a, forma2 = b)
Nessa parametrização, a média é e a variação é . Então, agora você pode seguir a resposta de Nick Sabbe.
Bom trabalho!
Editar
Eu acho:
,
e
,
onde e .
Na Wikipedia, por exemplo, você pode encontrar as seguintes fórmulas para média e variância de uma distribuição beta dada alfa e beta: e Invertendo-os (preencha na equação inferior) deve dê o resultado que você deseja (embora possa levar algum trabalho).
Resolva a equação para ou , resolvendo para , você obtém Em seguida, conecte-o à segunda equação e resolva . Então você obtém que simplifica to Depois termine de resolver para .
Eu estava procurando por python, mas me deparei com isso. Portanto, isso seria útil para outras pessoas como eu.
Aqui está um código python para estimar os parâmetros beta (de acordo com as equações fornecidas acima):
# 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}
Você pode verificar os parâmetros e importando o pacote.scipy.stats.beta