I am trying to generate a logit bayesian regression model using the library rstanarm
.
This is a simplified version of the code (including data generation) that works
#Data Generation
set.seed(1)
tamanioMuestraSi=103
tamanioMuestraNo=127
etiquetaSi <- rep(1, times = tamanioMuestraSi)
etiquetaNo <- rep(0, times = tamanioMuestraNo)
cantidadCoches<- 0:5
probabilidadesCochesSi <- c(0.2, 0.25, 0.25, 0.2, 0.06, 0.04)
probabilidadesCochesNo <- c(0.4, 0.3, 0.1, 0.1, 0.08, 0.02)
cochesSi <- sample(cantidadCoches, size = tamanioMuestraSi, replace = TRUE, prob = probabilidadesCochesSi)
cochesNo <- sample(cantidadCoches, size = tamanioMuestraNo, replace = TRUE, prob = probabilidadesCochesNo)
mediaSueldoSi<- 2000
stdSueldoSi <- 150
mediaSueldoNo<- 1200
stdSueldoNo <- 110
sueldoSi <- rnorm(n = tamanioMuestraSi, mean = mediaSueldoSi, sd = stdSueldoSi)
sueldoNo <- rnorm(n = tamanioMuestraNo, mean = mediaSueldoNo, sd = stdSueldoNo)
estadoHospital<- 0:1
probabilidadesEstadoHospitalSi <- c(0.05, 0.95)
probabilidadesEstadoHospitalNo <- c(0.1, 0.9)
hospSi <- sample(estadoHospital, size = tamanioMuestraSi, replace = TRUE, prob = probabilidadesEstadoHospitalSi)
hospNo <- sample(estadoHospital, size = tamanioMuestraNo, replace = TRUE, prob = probabilidadesEstadoHospitalNo)
datosSi<- data.frame(Etiqueta = etiquetaSi, Coche = cochesSi,
Sueldo=sueldoSi, Hospitalizado = hospSi)
datosNo<- data.frame(Etiqueta = etiquetaNo, Coche = cochesNo,
Sueldo=sueldoNo, Hospitalizado = hospNo)
datosCreditoOrdenados <- rbind(datosSi, datosNo)
datosCreditoRandomizando <- sample(nrow(datosCreditoOrdenados))
datosCredito <- datosCreditoOrdenados[datosCreditoRandomizando , ]
############## Working Model Starts Here #########################
library(bayesplot)
library(rstanarm)
library(ggplot2)
library(modelsummary)
library(knitr)
fit <- stan_glm(Etiqueta ~ ., family = binomial(link = "logit"),
data = datosCredito, verbose = F, refresh = 0)
efectos_fijos<-get_estimates(fit)
kable(efectos_fijos, booltabs=T, digits=3,
caption="Efectos fijos del modelo Consumo de gasolina")
posterior <- as.matrix(fit)
plot_title <- ggtitle("Posterior Coche",
"Con la mediana y un intervalo de confianza del 80%")
mcmc_areas(posterior,
pars = c("Coche"),
prob = 0.8) + plot_title
I want to provide suitable priors to the functions, so I change the code to instead bel
# Define priors for binary variables
prior_hospitalizado <- prior(bernoulli(0.5), "Hospitalizado")
# Define priors for count variables
prior_coche <- prior(poisson(2), "Coche")
# Define priors for continuous variables
prior_sueldo <- prior(normal(0, 1000), "Sueldo")
# Combine all the priors
all_priors <- prior_hospitalizado +
prior_coche +
prior_sueldo
# Fit the model with the updated priors
fit <- stan_glm(Etiqueta ~ ., family = binomial(link = "logit"),
prior = all_priors,
data = datosCredito, verbose = F, refresh = 0)
Then, I am gettin an error Error in prior(bernoulli(0.5), "Hospitalizado") : could not find function "prior"
Can someone help me to propperly program said priors. There is an example here, but it does just use one prior. This other example confuses me further.
Any guidance is appreciated.