J'ai un jeu de données qui combine plusieurs enquêtes, avec différents pays, au fil des années. Ma variable dépendante (lrparty) est la position idéologique d'une partie (allant de 0 à 10) selon les répondants à l'enquête. J'ai plusieurs variables indépendantes telles que l'âge, le sexe, l'éducation, la partisanerie et le revenu des répondants. Puis, pour chaque parti et chaque enquête, je voudrais tracer les valeurs prédites de lrparty selon l'individu modal (par exemple, répondant avec l'âge = 31, femelle = 1, l'éducation = 2, le revenu = 2, et partisan = 1) au fil du temps. Donc, le graphique ressemblerait à: x-axis = years; y-axis = valeurs prédites de lrparty en fonction de l'individu modal.Bayesian Ordered Logit - Essayer de tracer prédite y au fil du temps basé sur un individu modal
En somme, ce sont les étapes de ce que je suis en train de faire: 1. Estimation du modèle: logit ordonné de placement de la partie (lrparty), régressant sur le sexe, l'âge, l'éducation, le revenu et la partisanerie des répondants.
Prendre des tirages postérieurs.
Prédire le placement de la partie pour l'intimée modal (par exemple, 500 tirages)
Puis, je me attends d'avoir un ensemble de données qui devrait ressembler à: Année, Enquête, pays, Parti (code cmp),% emplacements manquants, x1: x500 (à partir des tirages)
À partir de cet ensemble de données, je générerais mes graphiques. Par exemple, pour le Royaume-Uni, selon l'enquête CSES.
Afin de comprendre le code, je commencé à utiliser une seule enquête (CSEs), un pays (Royaume-Uni), et une partie (conservateurs) que vous pouvez voir dans mon code ci-dessous. Mais je ne sais pas comment aller d'où je suis dans le code à l'intrigue que je veux (ci-dessus décrit).
library(rstan)
library(tidyverse)
library(brms)
library(ggplot2)
library(ggthemes)
library(ggmcmc)
## Data:
load("pbrands.RData")
## Keeping only country = uk; survey = cses; party = conservatives
uk_cses_con = pbrands %>%
select(lrparty, female, age, education, income, partisan, year, survey,
country, cmp, party_name_short, party_name_english, lrs) %>%
filter(survey == "cses") %>%
filter(country == "uk") %>%
filter(cmp == 51620)
## Conducting a Bayesian ordered logit model
fit <- brm(lrparty ~ age + income + education + female + partisan,
data = uk_cses_con, family = "cumulative", chains = 4, iter = 1000)
## Trace and Density Plots for MCMC Samples
plot(fit)
## Posterior Predictive Checks
pp_check(fit)
## Getting variables' modes:
getmode <- function(v) {
uniqv <- unique(v)
uniqv[which.max(tabulate(match(v, uniqv)))]
}
getmode(uk_cses_con$age)
getmode(uk_cses_con$female)
getmode(uk_cses_con$education)
getmode(uk_cses_con$income)
getmode(uk_cses_con$partisan)
## Creating the data frame for the modal individual
newavg <- data.frame(age = 31, female = 1, education = 2, income = 2,
partisan = 0, years = uk_cses_con$year)
## predict response for new data
pred <- predict(fit, newdata = newavg)
# extract posterior samples of population-level effects
samples1 <- posterior_samples(fit)
## Display marginal effects of predictors
marginal <- marginal_effects(fit)
## Plot predicted lrparty (my dependent variable) over time (with error:
confidence interval) based on the modal respondent (age = 31, female = 1,
education = 0, income = 0, partisan = 0)
##?
Merci d'avance!