J'essaie d'indiquer une distribution antérieure pour une méta-analyse bayésienne.
J'ai les informations suivantes sur une variable aléatoire:
- Deux observations: 3.0, 3.6
- un scientifique qui étudie la variable m'a dit que , et que des valeurs aussi élevées que 6 ont une probabilité non nulle.
J'ai utilisé l'approche d'optimisation suivante (le mode de log-N = :
prior <- function(parms, x, alpha) {
a <- abs(plnorm(x[1], parms[1], parms[2]) - (alpha/2))
b <- abs(plnorm(x[2], parms[1], parms[2]) - (1-alpha/2))
mode <- exp(parms[1] - parms[2]^2)
c <- abs(mode-3.3)
return(a + b + c)
}
v = nlm(prior,c(log(3.3),0.14),alpha=0.05,x=c(2.5,7.5))
x <- seq(1,10,0.1)
plot(x, dlnorm(x, v$estimate[1], v$estimate[2]))
abline(v=c(2.5,7.5), lty=2) #95%CI
Dans la figure, vous pouvez voir la distribution que cela renvoie, mais je voudrais trouver quelque chose de plus semblable aux lignes rouges que j'ai dessinées.
Cela fournit la même distribution de forme en utilisant le lognormal, gamma ou la normale, et il en résulte une distribution avec et , c'est à dire:
plnorm(c(5,6), v$estimate[1],v$estimate[2])
Quelqu'un peut-il suggérer des alternatives? Je préférerais m'en tenir à une seule distribution plutôt qu'à un mélange.
Merci!
r
distributions
probability
bayesian
optimization
David LeBauer
la source
la source
Réponses:
Si, compte tenu de la réponse à mon commentaire ci-dessus, vous souhaitez limiter la plage de la distribution, pourquoi ne pas simplement adapter une distribution bêta où vous redimensionnez à l'intervalle unitaire? En d'autres termes, si vous savez que le paramètre d'intérêt doit se situer entre[ 2 , 8 ] , alors pourquoi ne pas définir Oui=X- 56+12=X- 26 . Où j'ai d'abord centré l'intervalle sur zéro, divisé par la largeur de sorte que Y aura une plage de 1, puis ajouté12 retour de sorte que la plage de Y est [ 0 , 1 ] . (Vous pouvez y penser de toute façon: directement depuis[ 2 , 8 ] → [ 0 , 1 ] ou de [ 2 , 8 ] → [ -12,12] → [ 0 , 1 ] , mais j'ai pensé que ce dernier pourrait être plus facile au début).
Ensuite, avec deux points de données, vous pourriez adapter un bêta postérieur avec un bêta uniforme avant?
la source
Qu'en est-il de la distribution de Kumaraswamy , qui a le pdf suivant:
la source
Étant donné que la distribution log-normale a deux paramètres, vous ne pouvez pas l'adapter de manière satisfaisante à trois contraintes qui ne l'adaptent pas naturellement. Avec des quantiles extrêmes de 2,5 et 7,5, le mode est ~ 4, et vous ne pouvez pas faire grand-chose à ce sujet. Étant donné que l'échelle des erreurs pour
a
etb
est beaucoup plus petite que pourc
, l'une d'entre elles sera à peu près ignorée lors de l'optimisation.Pour un meilleur ajustement, vous pouvez soit choisir une distribution à trois paramètres, par exemple la distribution gamma généralisée (implémentée dans le
VGAM
package), soit ajouter un paramètre de décalage à la distribution lognormale (ou gamma, ...).Enfin, comme la distribution que vous recherchez n'est clairement pas symétrique, la moyenne des deux observations données n'est pas la bonne valeur pour le mode. Je maximiserais la somme des densités à 3,0 et 3,6 tout en maintenant les quantiles extrêmes à 2,5 et 7,5 - c'est possible si vous avez trois paramètres.
la source
Vous pouvez également essayer la distribution triangulaire. Pour ajuster cela, vous spécifiez essentiellement une borne inférieure (ce serait X = 2), une borne supérieure (ce serait X = 8) et une valeur "très probable". La page wikepedia http://en.wikipedia.org/wiki/Triangular_distribution a plus d'informations sur cette distribution. S'il n'y a pas beaucoup de confiance dans la valeur "la plus probable" (comme cela semble être le cas avant d'observer des données), il peut être judicieux de placer une distribution préalable non informative dessus, puis d'utiliser les deux données points pour estimer cette valeur. Un bon est le précédent de Jeffrey, qui pour ce problème serait p (c) = 1 / (pi * sqrt ((c-2) * (c-8))), où "c" est la "valeur la plus probable" "(conforme à la notation wikipedia).
Compte tenu de cet préalable, vous pouvez déterminer la distribution postérieure de c de manière analytique ou via la simulation. La forme analytique de la probabilité n'est pas particulièrement agréable, la simulation semble donc plus attrayante. Cet exemple est particulièrement bien adapté à l'échantillonnage par rejet (voir la page wiki pour une description générale de l'échantillonnage par rejet), car la probabilité maximisée est de 1/3 ^ n quelle que soit la valeur de c, qui fournit la "borne supérieure". Vous générez donc un "candidat" à partir du précédent de Jeffrey (appelez-le c_i), puis vous évaluez la probabilité à ce candidat L (x1, .., xn | c_i), et vous divisez par la probabilité maximisée, pour donner (3 ^ n ) * L (x1, .., xn | c_i). Vous générez ensuite une variable aléatoire U (0,1), et si u est inférieur à (3 ^ n) * L (x1, .., xn | c_i), puis acceptez c_i comme valeur échantillonnée postérieure, sinon jetez c_i et recommencez. Répétez ce processus jusqu'à ce que vous ayez suffisamment d'échantillons acceptés (100, 500, 1 000 ou plus selon la précision que vous souhaitez). Ensuite, il suffit de prendre la moyenne de l'échantillon de la fonction de c qui vous intéresse (la probabilité d'une nouvelle observation est un candidat évident pour votre application).
Une alternative à accepter-rejeter consiste à utiliser la valeur de la probabilité comme poids (et ne pas générer le u), puis à procéder à la prise de moyennes pondérées en utilisant tous les candidats, plutôt qu'à des moyennes non pondérées avec les candidats acceptés.
la source