У меня есть набор данных, который объединяет несколько опросов по разным странам за годы. Моя зависимая переменная (lrparty) - это идеологическая позиция партии (от 0 до 10) по мнению респондентов. У меня есть несколько независимых переменных, таких как возраст, пол, образование, партийность и доход респондентов.
Затем для каждой партии и каждого опроса я хотел бы построить график прогнозируемых значений lrparty в соответствии с модальным индивидуумом (например, респондент с возрастом = 31, женщина = 1, образование = 2, доход = 2 и партизан = 1) через некоторое время. Итак, график будет выглядеть так: ось x = годы; Ось Y = прогнозируемые значения lrparty в соответствии с модальным индивидуумом.
В общем, это этапы того, что я пытаюсь сделать: 1. Оценить модель: упорядоченный логит размещения партии (lrparty), регрессии по полу, возрасту, образованию, доходу и партийности респондентов.
Возьмите задние рисунки.
Предсказать размещение вечеринки для модального респондента (например, 500 розыгрышей)
Затем я ожидаю получить набор данных, который должен выглядеть так: Год, Опрос, Страна, Партия (код cmp),% отсутствующих мест размещения, x1: x500 (из розыгрышей).
Из этого набора данных я бы построил свои графики. Например, для Великобритании, согласно опросу CSES.
Чтобы разобраться в коде, я начал использовать только один опрос (cses), одну страну (Великобритания) и одну партию (консерваторы), как вы можете видеть в моем коде ниже. Но я не знаю, как перейти от того места, где я нахожусь в коде, к нужному мне сюжету (описанному выше).
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)
##?
Заранее спасибо!