Last data update: 2014.03.03

R: Test a one sided hypothesis from a numerically specified...
pNullR Documentation

Test a one sided hypothesis from a numerically specified posterior CDF or from a sample from the posterior

Description

Calculates the probability of a one sided null hypothesis from a numerically calculated posterior CDF or from a sample from the posterior.

Usage

pNull(theta0, theta, cdf = NULL, type = 'upper')

Arguments

theta0

the hypothesized value, i.e. H0: theta <= theta0

theta

a sample of values from the posterior density, or, if cdf is not NULL then the values over which the the posterior CDF is specified

cdf

the values of the CDF, F(θ) = int_{-∞}^{θ}f(t).df where f(t) is the PDF.

type

the type of probability to return, 'lower' = Pr(theta <= theta0) or 'upper' = Pr(theta >= theta0). It is sufficient to use 'l' or 'u'

Details

This function uses linear interpolation to calculate bounds for points that may not be specified by CDF

Value

a list containing the element prob which will be the upper or lower tail probability depending on type

Examples

## commands for calculating a numerical posterior CDF.
## In this example, the likelihood is proportional to
## eqn{\theta^{3/2}\times exp(-\theta/4)} and a N(6, 9) prior is used.
theta <- seq(from = 0.001, to = 40, by = 0.001)
prior <- dnorm(theta,6,3)
ppnLike <- theta^1.5*exp(-theta/4)
ppnPost <- prior*ppnLike
scaleFactor <- sintegral(theta, ppnPost)$int
posterior <- ppnPost/scaleFactor
cdf <- sintegral(theta, posterior)$y
pNull(15, theta, cdf)

## Use an inverse method to take a random sample of size 1000
## from the posterior
suppressWarnings(Finv <- approxfun(cdf, theta))
thetaSample<-Finv(runif(1000))
pNull(15, thetaSample)

Results


R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> library(Bolstad2)
> png(filename="/home/ddbj/snapshot/RGM3/R_CC/result/Bolstad2/pNull.Rd_%03d_medium.png", width=480, height=480)
> ### Name: pNull
> ### Title: Test a one sided hypothesis from a numerically specified
> ###   posterior CDF or from a sample from the posterior
> ### Aliases: pNull
> 
> ### ** Examples
> 
> ## commands for calculating a numerical posterior CDF.
> ## In this example, the likelihood is proportional to
> ## eqn{\theta^{3/2}\times exp(-\theta/4)} and a N(6, 9) prior is used.
> theta <- seq(from = 0.001, to = 40, by = 0.001)
> prior <- dnorm(theta,6,3)
> ppnLike <- theta^1.5*exp(-theta/4)
> ppnPost <- prior*ppnLike
> scaleFactor <- sintegral(theta, ppnPost)$int
> posterior <- ppnPost/scaleFactor
> cdf <- sintegral(theta, posterior)$y
> pNull(15, theta, cdf)
Posterior Pr(theta>=theta0) is 0.000600230409672609
> 
> ## Use an inverse method to take a random sample of size 1000
> ## from the posterior
> suppressWarnings(Finv <- approxfun(cdf, theta))
> thetaSample<-Finv(runif(1000))
> pNull(15, thetaSample)
Posterior Pr(theta>=theta0) is 0.001
> 
> 
> 
> 
> 
> dev.off()
null device 
          1 
>