[R] How to compute a P-value for a complex mixture of chi-squared distributions in R

Rui Barradas ruipbarradas at sapo.pt
Sat Jun 1 12:13:28 CEST 2013


Hello,

Try the following.


dmix <- function(x){
	dens <- function(x, df) dchisq(x^2, df = df)*2*x
	0.5*dens(x, df = 1) + 0.5*dens(x, df = 2)
}
pmix <- function(x, lower.tail = TRUE){
	p <- integrate(dmix, lower = 0, upper = x)
	if(lower.tail) p$value else 1 - p$value
}

quant <- 1
pmix(quant, lower.tail = FALSE)


Hope this helps,

Rui Barradas

Em 01-06-2013 05:26, Tiago V. Pereira escreveu:
> Hello, R users!
>
> I am struggling with the following problem:
>
> I need to compute a P-value for a mixture of two chi-squared
> distributions. My P-value is given by:
>
> P = 0.5*prob(sqrt(chi2(1)) <= x) + 0.5*prob(sqrt(chi2(2)) <= x)
>
> In words, I need to compute the p-value for 50–50 mixture of the square
> root of a chi-squared random variable with 1 degree of freedom and the
> square root of a chi-squared with two degrees of freedom.
>
> Although I can quickly simulate data, the P-values I am looking for are at
> the tail of the distribution, that is, alpha levels below 10^-7. Hence,
> simulation is not efficient.
>
> Are you aware of smart approach?
>
>
> All the best,
>
> Tiago
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list