inst/doc/p6.R

## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(
  echo = TRUE,
  collapse = TRUE,
  comment = "#>"
)

## -----------------------------------------------------------------------------
fakenews <- bayesrules::fake_news[, c("type", "title_has_excl", "title_words", "negative")]

## -----------------------------------------------------------------------------
library(R2BayesX)

## ----eval=FALSE---------------------------------------------------------------
# model1 <- bayesx(
#   formula = y ~ x1 + x2 + x3,
#   data = data.set,
#   family = "binomial"
# )

## -----------------------------------------------------------------------------
fakenews$titlehasexcl <- as.factor(fakenews$title_has_excl)

## -----------------------------------------------------------------------------
fakenews$typeFAKE <- fakenews$type == "fake"

## ----fig = TRUE---------------------------------------------------------------
# Is there a link between the fakeness and whether the title has an exclamation mark?
table(fakenews$title_has_excl, fakenews$typeFAKE)
# For the quantitative variables, look at boxplots on fake vs real
boxplot(fakenews$title_words ~ fakenews$typeFAKE)
boxplot(fakenews$negative ~ fakenews$typeFAKE)


## ----fig = TRUE---------------------------------------------------------------
# Produce the BayesX output
bayesx.output <- bayesx(formula = typeFAKE ~ titlehasexcl + title_words + negative,
                        data = fakenews,
                        family = "binomial",
                        method = "MCMC",
                        iter = 15000,
                        burnin = 5000)
summary(bayesx.output)
confint(bayesx.output)

## ----fig = TRUE, fig.width = 5, fig.height = 10-------------------------------
# Traces can be obtained separately
plot(bayesx.output,which = "coef-samples")

## ----fig = TRUE---------------------------------------------------------------
# And the density plots one-by-one
oldpar <- par(mfrow = c(2, 2))
plot(density(samples(bayesx.output)[,"titlehasexclTRUE"]),main="Title Has Excl")
plot(density(samples(bayesx.output)[,"title_words"]),main="Title Words")
plot(density(samples(bayesx.output)[,"negative"]),main="Negative")
par(oldpar)

## ----fig = TRUE---------------------------------------------------------------
# Fit model - note similarity with bayesx syntax
glm.output <- glm(formula = typeFAKE ~ titlehasexcl + title_words + negative,
                  data = fakenews,
                  family = "binomial")
# Summarise output
summary(glm.output)
# Perform ANOVA on each variable in turn
drop1(glm.output,test="Chisq")

## -----------------------------------------------------------------------------
esdcomp <- faraway::esdcomp

## ----echo=FALSE---------------------------------------------------------------
library(R2BayesX)

## ----eval=FALSE---------------------------------------------------------------
# model1 <- bayesx(formula = y ~ x1 + x2 + x3 + offset(w),
#                  data = data.set,
#                  family="poisson")

## -----------------------------------------------------------------------------
esdcomp$logvisits <- log(esdcomp$visits)

## ----fig = TRUE---------------------------------------------------------------
# Compute the ratio
esdcomp$ratio <- esdcomp$complaints / esdcomp$visits
# Plot the link with revenue
plot(esdcomp$revenue,esdcomp$ratio)
# Use boxplots against residency and gender
boxplot(esdcomp$ratio ~ esdcomp$residency)
boxplot(esdcomp$ratio ~ esdcomp$gender)

## ----fig = TRUE---------------------------------------------------------------
# Fit model - note similarity with glm syntax
esdcomp$logvisits <- log(esdcomp$visits)
bayesx.output <- bayesx(formula = complaints ~ residency + gender + revenue,
                        offset = logvisits,
                        data = esdcomp,
                        family = "poisson")
# Summarise output
summary(bayesx.output)

## ----fig = TRUE, fig.width = 5, fig.height = 10-------------------------------
# An overall plot of sample traces and density estimates
#  plot(samples(bayesx.output))
# Traces can be obtained separately
plot(bayesx.output,which = "coef-samples")

## ----fig = TRUE---------------------------------------------------------------
# And the density plots one-by-one
oldpar <- par(mfrow = c(2, 2))
plot(density(samples(bayesx.output)[, "residencyY"]), main = "Residency")
plot(density(samples(bayesx.output)[, "genderM"]), main = "Gender")
plot(density(samples(bayesx.output)[, "revenue"]), main = "Revenue")
par(oldpar)

## ----fig = TRUE---------------------------------------------------------------
# Fit model - note similarity with bayesx syntax
esdcomp$log.visits <- log(esdcomp$visits)
glm.output <- glm(formula = complaints ~ residency + gender + revenue,
                  offset = logvisits,
                  data = esdcomp,
                  family = "poisson")
# Summarise output
summary(glm.output)
# Perform ANOVA on each variable in turn
drop1(glm.output, test = "Chisq")

Try the vibass package in your browser

Any scripts or data that you put into this service are public.

vibass documentation built on Aug. 8, 2025, 6:52 p.m.