bayes.lin.reg {Bolstad} | R Documentation |
This function is used to find the posterior distribution of the simple linear regression slope variable beta when we have a random sample of ordered pairs (x_{i}, y_{i}) from the simple linear regression model:
y_i = alpha_xbar + beta*x_i+epsilon_i
y_i = alpha_xbar + beta*x_i+epsilon_i
y_i = alpha_xbar + beta*x_i+epsilon_i
where the observation errors are, epsilon_i, independent normal(0,sigma^2) with known variance.
bayes.lin.reg( y, x, slope.prior = c("flat", "normal"), intcpt.prior = c("flat", "normal"), mb0 = 0, sb0 = 0, ma0 = 0, sa0 = 0, sigma = NULL, alpha = 0.05, plot.data = FALSE, pred.x = NULL, ... )
y |
the vector of responses. |
x |
the value of the explantory variable associated with each response. |
slope.prior |
use a “flat” prior or a “normal” prior. for beta |
intcpt.prior |
use a “flat” prior or a “normal” prior. for alpha_xbar |
mb0 |
the prior mean of the simple linear regression slope variable beta. This argument is ignored for a flat prior. |
sb0 |
the prior std. deviation of the simple linear regression slope variable beta - must be greater than zero. This argument is ignored for a flat prior. |
ma0 |
the prior mean of the simple linear regression intercept variable alpha_xbar. This argument is ignored for a flat prior. |
sa0 |
the prior std. deviation of the simple linear regression variable alpha_xbar - must be greater than zero. This argument is ignored for a flat prior. |
sigma |
the value of the std. deviation of the residuals. By default, this is assumed to be unknown and the sample value is used instead. This affects the prediction intervals. |
alpha |
controls the width of the credible interval. |
plot.data |
if true the data are plotted, and the posterior regression line superimposed on the data. |
pred.x |
a vector of x values for which the predicted y values are obtained and the std. errors of prediction |
... |
additional arguments that are passed to |
A list will be returned with the following components:
post.coef |
the posterior mean of the intecept and the slope |
post.coef |
the posterior standard deviation of the intercept the slope |
pred.x |
the vector of values for which predictions have been requested. If pred.x is NULL then this is not returned |
pred.y |
the vector predicted values corresponding to pred.x. If pred.x is NULL then this is not returned |
pred.se |
The standard errors of the predicted values in pred.y. If pred.x is NULL then this is not returned |
## generate some data from a known model, where the true value of the ## intercept alpha is 2, the true value of the slope beta is 3, and the ## errors come from a normal(0,1) distribution set.seed(123) x = rnorm(50) y = 2 + 3*x + rnorm(50) ## use the function with a flat prior for the slope beta and a ## flat prior for the intercept, alpha_xbar. bayes.lin.reg(y,x) ## use the function with a normal(0,3) prior for the slope beta and a ## normal(30,10) prior for the intercept, alpha_xbar. bayes.lin.reg(y,x,"n","n",0,3,30,10) ## use the same data but plot it and the credible interval bayes.lin.reg(y,x,"n","n",0,3,30,10, plot.data = TRUE) ## The heart rate vs. O2 uptake example 14.1 O2 = c(0.47,0.75,0.83,0.98,1.18,1.29,1.40,1.60,1.75,1.90,2.23) HR = c(94,96,94,95,104,106,108,113,115,121,131) plot(HR,O2,xlab="Heart Rate",ylab="Oxygen uptake (Percent)") bayes.lin.reg(O2,HR,"n","f",0,1,sigma=0.13) ## Repeat the example but obtain predictions for HR = 100 and 110 bayes.lin.reg(O2,HR,"n","f",0,1,sigma=0.13,pred.x=c(100,110))