R/is.geom.R

Defines functions is.geom

Documented in is.geom

is.geom <-
function(x,a=10,p0=NULL)
{
	re=1;
	for(i in 1:length(x))
		if(x[i]<0||round(x[i])!=x[i])
			re=-1;
	if(re==-1)
	{
		return(data.frame("state"=-1,"pvalue"=1));
	}
	else
	{
		di=max(x)-min(x)+1;
		if(is.null(p0))
		{
			p0=1/mean(x);
			df=di;
		}
		else
		{
			df=di+1;
		}
		if(p0>=0&&p0<=1)
		{
		p=rep(0,max(x)+1);
		y=rep(0,max(x)+1);
		q=0;
		for(i in 1:max(x))
		{
			p[i]=dgeom(i-1,p0);
			if(p[i]==0)
			{
				break;
			}
			for(j in 1:length(x))
				if(x[j]==i)
					y[i]=y[i]+1;
			q=q+(y[i]-length(x)*p[i])^2/(length(x)*p[i]);
		}
		p[max(x)+1]=1-pgeom(max(x)-1,p0);
		q=q+length(x)*p[max(x)+1];
		q0=qchisq(1-a,df);
                pvalue=pchisq(q,df);
		if(q<=q0)
		{
			return(data.frame("qchisq"=q,"pvalue"=pvalue));
		}
		else
		{
			return(data.frame("state"=-1,"pvalue"=1));
		}
		}
		else 
		{
			return(data.frame("state"=-1,"pvalue"=1));
		}
	}
}

Try the DnE package in your browser

Any scripts or data that you put into this service are public.

DnE documentation built on May 2, 2019, 4:03 p.m.