# NOT RUN {
#Fit a normal distribution
x <- rnorm(250)
fitX <- fit(x, "norm")
#Fit a log-normal distribution
x <- rlnorm(250)
fitX <- fit(x, "lnorm")
#Fit a gamma distribution
x <- rgamma(250, shape = 2, scale = 1.2)
fitX <- fit(x, "gamma",
ini = list(list(shape = 1),
list(shape = 2),
list(shape = 3)),
thin = 1, burnin = 1000)
#Fit a scaled t distribution
x <- optimalThreshold:::rt.scaled(250, df = 4, mean = 2.5, sd = 2)
fitX <- fit(x, "t",
ini = list(list(mu = 1, sd = 1, df = 2),
list(mu = 2, sd = 2, df = 4),
list(mu = 3, sd = 3, df = 6)),
thin = 1, burnin = 1000, model = NULL)
#Fit a logistic distribution
x <- rlogis(250)
fitX <- fit(x, "logis",
ini = list(list(location = 0.3, scale = 0.5),
list(location = 1, scale = 1),
list(location = 2, scale = 2)),
thin = 1, burnin = 1000, model = NULL)
#Specify which distribution is 'undefined'
x <- rnorm(250)
fitX <- fit(x, "undefined")
#Fit a user-defined normal distribution with informative priors
library(rjags)
x <- rnorm(250, mean = 2, sd = 1)
model <- "model
{
mu ~ dunif(0, 4)
log_sd ~ dunif(-1, 1)
sd <- exp(log_sd)
tau <- 1 / (sd^2)
for (i in 1:N)
{
x[i] ~ dnorm(mu, tau)
}
}
"
modelJAGS <- jags.model(file = textConnection(model), data = list(x = x, N = length(x)),
inits = list(list(mu = 1, log_sd = -0.5),list(mu = 3.5, log_sd = 0.5)),
n.chains = 2, quiet = TRUE)
update(modelJAGS, 1000, progress.bar = "text")
mcmcpara <- coda.samples(modelJAGS, c("mu", "log_sd"), n.iter = 2000, thin = 1)
varnames(mcmcpara) <- c("mu", "sd")
mcmcpara[[1]][, "sd"] <- exp(mcmcpara[[1]][, "sd"])
mcmcpara[[2]][, "sd"] <- exp(mcmcpara[[2]][, "sd"])
fitX <- fit(x, "user", paraNames = varnames(mcmcpara), mcmcList = mcmcpara,
cdf = function(x, mu, sd) pnorm(x, mu, sd),
gradient = getMethod(gradient, "normalDist"),
hessian = function(x, mu, sd) ((mu - x) / sd^2) * dnorm(x, mu, sd))
# }
Run the code above in your browser using DataLab