Learn R Programming

Polyfit (version 1.6.0)

twoSidedPValueFromDiscrete: Two sided P-value from discrete distribution

Description

Function to calculate a 2-sided p-value of an observation $xobs$ for a finite discrete distribution $$Prob(X = xobs) = probs[xobs + 1]$$ over the range $xobs$ in $(0, 1, ..., xmax)$ by "squaring off" the distribution to a continuous distribution

Usage

twoSidedPValueFromDiscrete(probs, xobs)

Arguments

probs
an array containing the probabilities that $X$ takes the values $0, 1, ..., xmax$
xobs
a single observed value of X

Value

  • A real valued randomised p-value between 0 and 1. If $xobs$ is generated with randomly with probability $probs[xobs + 1]$ the returned value will be uniformly distributed on the interval [0, 1].

Details

Note that the returned 2-sided p-value contains a random component, i.e. a given set of input parameters returns a different result each run

Examples

Run this code
pr <- dbinom(0:5,size=5,prob=0.4)
xSample <- rbinom(10000,size=5,prob=0.4)
pvalues <- c()
for(x in xSample){
  pvalues <- c(pvalues, twoSidedPValueFromDiscrete(pr,x))
	}
hist(pvalues)

Run the code above in your browser using DataLab