Built using Zelig version r packageVersion("Zelig")

knitr::opts_knit$set(
    stop_on_error = 2L
)
knitr::opts_chunk$set(
    fig.height = 11,
    fig.width = 7
)

options(cite = FALSE)

Bayesian Normal Linear Regression with normal.bayes.

Use Bayesian regression to specify a continuous dependent variable as a linear function of specified explanatory variables. The model is implemented using a Gibbs sampler. See for the maximum-likelihood implementation or for the ordinary least squares variation.

Syntax

z.out <- zelig(Y ~ X1 + X2, model = "normal.bayes", weights = w,
               data = mydata)
x.out <- setx(z.out)
s.out <- sim(z.out, x = x.out)

Additional Inputs

Use the following arguments to monitor the convergence of the Markov chain:

Use the following arguments to specify the model’s priors:

Zelig users may wish to refer to help(MCMCregress) for more information.

Examples

rm(list=ls(pattern="\\.out"))
suppressWarnings(suppressMessages(library(Zelig)))
set.seed(1234)

Basic Example

Attaching the sample dataset:

data(macro)

Estimating linear regression using normal.bayes:

z.out <- zelig(unem ~ gdp + capmob + trade, model = "normal.bayes",
               data = macro, verbose = FALSE)

You can check for convergence before summarizing the estimates with three diagnostic tests. See the section Diagnostics for Zelig Models for examples of the output with interpretation:

z.out$geweke.diag()
z.out$heidel.diag()
z.out$raftery.diag()
summary(z.out)

Setting values for the explanatory variables to their sample averages:

x.out <- setx(z.out)

Simulating quantities of interest from the posterior distribution given x.out:

s.out1 <- sim(z.out, x = x.out)
summary(s.out1)

Simulating First Differences

Set explanatory variables to their default(mean/mode) values, with high (80th percentile) and low (20th percentile) trade on GDP:

x.high <- setx(z.out, trade = quantile(macro$trade, prob = 0.8))
x.low <- setx(z.out, trade = quantile(macro$trade, prob = 0.2))

Estimating the first difference for the effect of high versus low trade on unemployment rate:

s.out2 <- sim(z.out, x = x.high, x1 = x.low)
summary(s.out2)

Model

$$ \begin{aligned} \epsilon_{i} & \sim & \textrm{Normal}(0, \sigma^2) \end{aligned} $$

where $\epsilon_{i}=Y_i-\mu_i$.

$$ \begin{aligned} \mu_{i}= x_{i} \beta, \end{aligned} $$

where $x_{i}$ is the vector of $k$ explanatory variables for observation $i$ and $\beta$ is the vector of coefficients.

$$ \begin{aligned} \beta & \sim & \textrm{Normal}k \left( b{0},B_{0}^{-1}\right) \ \sigma^{2} & \sim & {\rm InverseGamma}\left( \frac{c_0}{2}, \frac{d_0}{2} \right) \end{aligned} $$

where $b_{0}$ is the vector of means for the $k$ explanatory variables, $B_{0}$ is the $k\times k$ precision matrix (the inverse of a variance-covariance matrix), and $c_0/2$ and $d_0/2$ are the shape and scale parameters for $\sigma^{2}$. Note that $\beta$ and $\sigma^2$ are assumed to be a priori independent.

Quantities of Interest

$$ \begin{aligned} E(Y) = x_{i} \beta, \end{aligned} $$

given posterior draws of $\beta$ based on the MCMC iterations.

$$ \begin{aligned} \text{FD}=E(Y\mid X_{1})-E(Y\mid X). \end{aligned} $$

$$ \begin{aligned} \frac{1}{\sum_{i=1}^n t_{i}}\sum_{i:t_{i}=1} { Y_{i}(t_{i}=1)-E[Y_{i}(t_{i}=0)] }, \end{aligned} $$

where $t_{i}$ is a binary explanatory variable defining the treatment ($t_{i}=1$) and control ($t_{i}=0$) groups.

$$ \frac{1}{\sum_{i=1}^n t_i}\sum_{i:t_i=1}^n \left{ Y_i(t_i=1) - \widehat{Y_i(t_i=0)} \right}, $$

where $t_{i}$ is a binary explanatory variable defining the treatment ($t_{i}=1$) and control ($t_{i}=0$) groups.

Output Values

The output of each Zelig command contains useful information which you may view. For example, if you run:

z.out <- zelig(y ~ x, model = "normal.bayes", data)

then you may examine the available information in z.out by using names(z.out), see the draws from the posterior distribution of the coefficients by using z.out$coefficients, and view a default summary of information through summary(z.out). Other elements available through the $ operator are listed below.

See also

Bayesian normal regression is part of the MCMCpack package by Andrew D. Martin and Kevin M. Quinn. The convergence diagnostics are part of the CODA package by Martyn Plummer, Nicky Best, Kate Cowles, and Karen Vines.

z5 <- znormalbayes$new()
z5$references()


IQSS/Zelig documentation built on Dec. 11, 2023, 1:51 a.m.