Learn R Programming

bayesm (version 3.0-2)

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)

Arguments

y

vector of values of dep variable.

X

n (length(y)) x k Design matrix.

betabar

k x 1 vector. Prior mean of regression coefficients.

A

Prior precision matrix.

Value

k x 1 vector containing a draw from the posterior distribution.

Warning

This routine is a utility routine that does not check the input arguments for proper dimensions and type.

In particular, X must be a matrix. If you have a vector for X, coerce it into a matrix with one column

Details

model: \(y=x'\beta + e\). \(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. http://www.perossi.org/home/bsm-1

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
A=diag(c(.05,.05)); betabar=c(0,0)
##
## 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(.01,.05,.5,.95,.99))
mat=rbind(beta,mat); rownames(mat)[1]="beta"; print(mat)

Run the code above in your browser using DataLab