pFsum<-function(x,df,a,ddf=Inf,lower.tail=TRUE,method=c("saddlepoint","integration","satterthwaite"),...){
if (ddf==Inf) return(pchisqsum(x,df=df,a=a,lower.tail=lower.tail,...))
method<-match.arg(method)
if (method=="integration" && !(requireNamespace("CompQuadForm",quietly=TRUE))){
warning("Package 'CompQuadForm' not found, using saddlepoint approximation")
method<-"saddlepoint"
}
if (method=="integration"){
int<-CompQuadForm::davies(0,lambda=c(a,-x/ddf), h=c(df,ddf),acc=1e-7)
if ( (int$ifault %in% c(0,2))){
rval<-int$Qq
} else {
rval<-CompQuadForm::davies(0,lambda=c(a,-x/ddf), h=c(df,ddf),acc=1e-5)$Qq
}
if(lower.tail)
return(1-rval)
else
return(rval)
} else if (method %in% c("satterthwaite","saddlepoint")){
if(any(df>1)){
a<-rep(a,df)
}
tr<-mean(a)
tr2<-mean(a^2)/(tr^2)
scale=tr*tr2
ndf=length(a)/tr2
rval<-pf(x/ndf/scale, ndf,ddf,lower.tail=lower.tail)
if (method=="saddlepoint"){
a<-c(a,-x/ddf)
df<-c(df,ddf)
if(any(df>1))
a<-rep(a,df)
s<-saddle(0,a)
if (!is.na(s)) {
if (lower.tail)
rval<-1-s
else
rval<-s
}
}
rval
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.