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

Sat Jun 1 12:46:54 CEST 2013

```Hello,

Or, if you want to pass a vector of quantiles to pmix,

pmix <- function(x, lower.tail = TRUE){
p <- sapply(x, function(.x) integrate(dmix, lower = 0, upper = .x)\$value)
if(lower.tail) p else 1 - p
}

Em 01-06-2013 11:13, Rui Barradas escreveu:
> 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,
>
>
> 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
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help