Learn R Programming

Bolstad (version 0.2-41)

normmixp: Bayesian inference on a normal mean with a mixture of normal priors

Description

Evaluates and plots the posterior density for \(\mu\), the mean of a normal distribution, with a mixture of normal priors on \(\mu\)

Usage

normmixp(
  x,
  sigma.x,
  prior0,
  prior1,
  p = 0.5,
  mu = NULL,
  n.mu = max(100, length(mu)),
  ...
)

Arguments

x

a vector of observations from a normal distribution with unknown mean and known std. deviation.

sigma.x

the population std. deviation of the observations.

prior0

the vector of length 2 which contains the means and standard deviation of your precise prior.

prior1

the vector of length 2 which contains the means and standard deviation of your vague prior.

p

the mixing proportion for the two component normal priors.

mu

a vector of prior possibilities for the mean. If it is NULL, then a vector centered on the sample mean is created.

n.mu

the number of possible \(\mu\) values in the prior.

additional arguments that are passed to Bolstad.control

Value

A list will be returned with the following components:

mu

the vector of possible \(\mu\) values used in the prior

prior

the associated probability mass for the values in \(\mu\)

likelihood

the scaled likelihood function for \(\mu\) given \(x\) and \(\sigma_x\)

posterior

the posterior probability of \(\mu\) given \(x\) and \(\sigma_x\)

See Also

binomixp normdp normgcp

Examples

Run this code
# NOT RUN {
## generate a sample of 20 observations from a N(-0.5, 1) population
x = rnorm(20, -0.5, 1)

## find the posterior density with a N(0, 1) prior on mu - a 50:50 mix of
## two N(0, 1) densities
normmixp(x, 1, c(0, 1), c(0, 1))

## find the posterior density with 50:50 mix of a N(0.5, 3) prior and a
## N(0, 1) prior on mu
normmixp(x, 1, c(0.5, 3), c(0, 1))

## Find the posterior density for mu, given a random sample of 4
## observations from N(mu, 1), y = [2.99, 5.56, 2.83, 3.47],
## and a 80:20 mix of a N(3, 2) prior and a N(0, 100) prior for mu
x = c(2.99, 5.56, 2.83, 3.47)
normmixp(x, 1, c(3, 2), c(0, 100), 0.8)

# }

Run the code above in your browser using DataLab