Learn R Programming

bayesm (version 3.1-6)

breg: Posterior Draws from a Univariate Regression with Unit Error Variance

Description

breg makes one draw from the posterior of a univariate regression (scalar dependent variable) given the error variance = 1.0. A natural conjugate (normal) prior is used.

Usage

breg(y, X, betabar, A)

Value

\(k x 1\) vector containing a draw from the posterior distribution

Arguments

y

\(n x 1\) vector of values of dep variable

X

\(n x k\) design matrix

betabar

\(k x 1\) vector for the prior mean of the regression coefficients

A

\(k x k\) prior precision matrix

Warning

This routine is a utility routine that does not check theinput arguments for proper dimensions and type. In particular, X must be a matrix. If you have a vector for X, coerce itinto a matrix with one column.

Author

Peter Rossi, Anderson School, UCLA, perossichi@gmail.com.

Details

model: \(y = X'\beta + e\) with \(e\) \(\sim\) \(N(0,1)\).
prior: \(\beta\) \(\sim\) \(N(betabar, A^{-1})\).

References

For further discussion, see Bayesian Statistics and Marketing by Rossi, Allenby, and McCulloch.

Examples

Run this code
if(nchar(Sys.getenv("LONG_TEST")) != 0) {R=1000} else {R=10}

## simulate data
set.seed(66)
n = 100
X = cbind(rep(1,n), runif(n)); beta = c(1,2)
y = X %*% beta + rnorm(n)

## set prior
betabar = c(0,0)
A = diag(c(0.05, 0.05))

## make draws from posterior
betadraw = matrix(double(R*2), ncol = 2)
for (rep in 1:R) {betadraw[rep,] = breg(y,X,betabar,A)}

## summarize draws
mat = apply(betadraw, 2, quantile, probs=c(0.01, 0.05, 0.50, 0.95, 0.99))
mat = rbind(beta,mat); rownames(mat)[1] = "beta"
print(mat)

Run the code above in your browser using DataLab