| bsarBig {bsamGP} | R Documentation |
Bayesian Spectral Analysis Regression for Big data
Description
This function fits a Bayesian spectral analysis regression model for Big data.
Usage
bsarBig(formula, nbasis, nint, mcmc = list(), prior = list(), verbose = FALSE)
Arguments
formula |
an object of class “ |
nbasis |
number of cosine basis functions. |
nint |
number of grid points where the unknown function is evaluated for plotting. The default is 500. |
mcmc |
a list giving the MCMC parameters.
The list includes the following integers (with default values in parentheses):
|
prior |
a list giving the prior information. The list includes the following parameters
(default values specify the non-informative prior):
|
verbose |
a logical variable. If |
Value
The MCMC samples of the parameters in the model are stored in the list mcmc.draws and
the posterior samples of the fitted values are stored in the list fit.draws.
The output list also includes the following objects:
post.est |
posterior estimates for all parameters in the model. |
call |
the matched call. |
mcmctime |
running time of Markov chain from |
See Also
Examples
# Ttrue function
ftrue <- function(x){
ft <- 7*exp(-3*x) + 2*exp(-70*(x-.6)^2) - 2 + 5*x
return(ft)
}
# Generate data
set.seed(1)
nobs <- 100000 # Number of observations
sigmat <- .5 # True sigma
nxgrid <- 500 # number of grid points: approximate likelihood & plots
xdata <- runif(nobs) # Generate x values
fobst <- ftrue(xdata) # True f at observations
ydata <- fobst + sigmat*rnorm(nobs)
# Compute grid on 0 to 1
xdelta <- 1/nxgrid
xgrid <- seq(xdelta/2, 1-xdelta/2, xdelta)
xgrid <- matrix(xgrid,nxgrid)
fxgridt <- ftrue(xgrid) # True f on xgrid
# Fit data
fout <- bsarBig(ydata ~ xdata, nbasis = 50, nint = nxgrid, verbose = TRUE)
# Plots
smcmc <- fout$mcmc$smcmc
t <- 1:smcmc
par(mfrow=c(2,2))
matplot(t, fout$mcmc.draws$theta, type = "l", main = "Theta", xlab = "Iteration", ylab = "Draw")
plot(t, fout$mcmc.draws$sigma, type = "l", main = "Sigma", xlab = "Iteration", ylab = "Draw")
matplot(t, fout$mcmc.draws$tau, type = "l", main = "Tau", xlab = "Iteration", ylab = "Draw")
matplot(t, fout$mcmc.draws$gamma, type = "l", main = "Gamma", xlab = "Iteration", ylab = "Draw")
dev.new()
matplot(fout$fit.draws$xgrid, cbind(fxgridt, fout$post.est$fhatm, fout$post.est$fhatq),
type = "l", main = "Regression Function", xlab = "X", ylab = "Y")
# Compute RMISE for regression function
sse <- (fout$post.est$fhatm - fxgridt)^2
rmise <- intgrat(sse, 1/nxgrid)
rmise <- sqrt(rmise)
rmise