Contexte : J'ai un doctorat en psychologie sociale, où les statistiques théoriques et les mathématiques étaient à peine couvertes dans mes cours quantitatifs. Au cours des études de premier cycle et des cycles supérieurs, on m'a enseigné (un peu comme beaucoup d'entre vous aussi dans les sciences sociales, probablement) à travers le cadre fréquentiste "classique". Maintenant, j'aime aussi R et utiliser des méthodes de simulation pour vérifier que les méthodes fonctionnent bienplus de sens pour moi que les preuves mathématiques (encore une fois: fond dans une science sociale quantitative, pas de statistiques théoriques). Les méthodes fréquentistes et les méthodes de simulation ensemble ont beaucoup de sens pour moi. Parce que les fréquentistes voient la probabilité comme une chance à long terme (par exemple, si je le fais un nombre arbitrairement élevé de fois, et cela arrive 50% du temps, alors il y a une probabilité de 50%). Nous pouvons simuler ce long terme avec les méthodes de Monte Carlo!
Complications : depuis le premier cycle, je suis très au courant des méthodes bayésiennes, et il y a toujours eu des gens dans ma vie qui m'appelaient du côté bayésien, disant que les résultats étaient plus faciles à interpréter, que nous obtenons une probabilité pour une hypothèse au lieu des données donné une hypothèse, etc. J'étais vraiment dans ceci et ai pris une classe Bayesian, ai lu quelques livres et papiers Bayesian et suis maintenant assez familier avec Stan et ses paquets R associés.
Enter Mayo : Après avoir pensé "le bayésien est probablement la voie de l'avenir" pendant un certain temps, j'ai lu l' inférence statistique de Deborah Mayo comme un test sévère . Elle dit qu'elle ne choisit pas de camp au début du livre, mais elle le fait: elle est fréquentiste, et une grande partie du livre défend les méthodologies fréquentistes. Je ne veux pas nécessairement entrer dans une discussion pour savoir si nous pensons ou non que la façon dont elle voit les preuves est valide, mais cela m'a fait penser: Bayes est-elle vraiment tout ce qui est annoncé? Je veux dire, la foule des Bayes est tellement fracturée qu'elle-même que je ne connais même pas la "bonne" façon d'analyser les données dans un cadre bayésien. Habituellement, j'utiliserais simplementrstanarm
et présentent des estimations ponctuelles et des intervalles crédibles ... qui correspondent souvent étroitement aux estimations fréquentistes et aux intervalles de confiance. Je pourrais faire des comparaisons de modèles, mais j'ai toujours peur de décrire les facteurs de Bayes comme des comparaisons de probabilités postérieures, etc.
Plus de réflexion : Ce que je n'arrêtais pas de penser à travers le livre de Mayo était: Il y a un moyen d'utiliser les ordinateurs pour s'assurer que nos méthodes fréquentistes fonctionnent, car la probabilité est ce que nous voyons à long terme et nous pouvons simuler cela. Les bayésiens ne peuvent même pas s'entendre sur la probabilité réelle, semble-t-il, selon l'école bayésienne (par défaut, subjective, etc.). Ce qui m'amène à ma question:
Question : Comment les bayésiens vérifient-ils que leurs méthodes définissent correctement l'incertitude (c.-à-d., Calculent des intervalles crédibles valides et des distributions postérieures) en utilisant des méthodes de simulation de Monte Carlo, si la probabilité n'est pas définie comme taux à long terme?
Exemple : je crée un générateur de données. Cela va simplement simuler à partir d'une distribution de Bernoulli avec une probabilité de 0,5:
set.seed(1839)
p <- .50
n <- 100
gen_dat <- function(n, p) {
rbinom(n, 1, p)
}
Maintenant, disons que je veux m'assurer que les intervalles de confiance dans une régression logistique sont réellement valides. Je peux simuler une régression un grand nombre de fois et m'assurer que la valeur réelle de la population tombe dans l'intervalle de confiance à 95% 95% du temps. C'est un modèle d'interception uniquement, donc je veux juste m'assurer que j'évalue p
correctement:
set.seed(1839)
iter <- 10000
results <- sapply(seq_len(iter), function(zzz) {
mod <- glm(gen_dat(n, p) ~ 1, binomial)
conf <- suppressMessages(confint(mod))
log(p / (1 - p)) < max(conf) & log(p / (1 - p)) > min(conf)
})
mean(results)
Cela prend quelques minutes à courir, mais nous nous retrouvons avec l' mean(results)
appel qui nous donne 0.9416
. C'est environ 95%, et je suis sûr de dire que la glm
commande décrit l'incertitude d'une manière valide. Je suis sûr qu'il se serait rapproché de 95% si j'avais augmenté iter
et voulu attendre ici plus longtemps sur mon ordinateur portable.
D'un autre côté, ajustons un modèle bayésien pour la même chose:
library(rstanarm)
set.seed(1839)
dat <- data.frame(y = gen_dat(n, p))
stan_mod <- stan_glm(y ~ 1, binomial, dat)
summary(stan_mod)
Cela me donne en partie:
Estimates:
mean sd 2.5% 25% 50% 75% 97.5%
(Intercept) -0.1 0.2 -0.5 -0.2 -0.1 0.0 0.3
mean_PPD 0.5 0.1 0.3 0.4 0.5 0.5 0.6
log-posterior -73.0 0.7 -75.1 -73.1 -72.7 -72.5 -72.5
Étant donné que les bayésiens ne définissent pas la probabilité comme ce que nous voyons à long terme, comment puis-je utiliser des méthodes de simulation pour vérifier que stan_glm
capturer avec précision l'incertitude? Autrement dit, comment puis-je avoir confiance que ces intervalles crédibles sont valides, en utilisant des méthodes de simulation? Et pour le moment, je ne suis même pas en train de définir un a priori - comment l'inclusion des prieurs intervient-elle ici, car cela affectera nos mesures d'incertitude?
Lorsque j'essayais d'écrire une régression bêta avec un composant de modèle d'obstacle dans Stan à partir de zéro une fois, quelqu'un m'a recommandé: "Simulez les données. Faites-le plusieurs fois, et les vraies estimations devraient être dans l'intervalle crédible d'environ 95 % du temps." Mais pour moi, cela va à l'encontre de la croyance même des Bayésiens! Cela repose sur une compréhension fréquentiste des probabilités! Alors, comment un bayésien pourrait-il me convaincre que l'intervalle crédible que j'obtiens de l' summary()
appel à mon modèle décrit avec précision l'incertitude, en utilisant des méthodes de simulation?
But de la question : Ceci est un exemple trivial, mais souvent les clients me posent des problèmes difficiles. Et j'essaie des choses que je ne connais pas, alors je lance souvent une étude de simulation pour m'assurer que ce que je fais est valide. Si je devais écrire un modèle personnalisé dans Stan, comment saurais-je que ce que je fais est légitime? Comment pourrais-je utiliser des méthodes de simulation pour vérifier que ce que je fais dans Stan va réellement me dire ce que je veux savoir?