Esempio n. 1
0
double veg_raup(double *x, int nr, int nc, int i1, int i2)
{
    double dist, J, A, B;
    int sim, t1, t2, j, count;
    
    sim = 0;
    t1 = 0;
    t2 = 0;
    count = 0;
    for (j = 0; j < nc; j++) {
        if (R_FINITE(x[i1]) && R_FINITE(x[i2])) {
            if (x[i1] > 0.0 && x[i2] > 0.0)
                sim++;
            if (x[i1] > 0)
                t1++;
            if (x[i2] > 0)
                t2++;
            count++;
        }
        i1 += nr;
        i2 += nr;
    }
    if (count == 0) return NA_REAL; 
    J = (double) (sim - 1);
    A = (t1 < t2) ? (double) t1 : (double) t2;
    B = (t1 < t2) ? (double) t2 : (double) t1;
    dist = 1 - phyper(J, A, (double) count - A, B, 1, 0);
    return dist;
}
Esempio n. 2
0
double phypergeo(double r, double n, double N, double k, int i, int j)
{
    if((r > N) || (k > n) || (k > r))
        return std::numeric_limits<double>::quiet_NaN();
    double nr = r;
    double nb = N - r;
    return phyper(nr, nb, n, k, i, j);
}
Esempio n. 3
0
int main (int argc, char *argv[]) {	
// argc	
	int a,b,c,d;
	int q,m,n,k; // phyper in R
	double pval;
	if (argc <= 2) {
		fprintf(stderr, "Usage: %s <D> <B> <C> <A>\nsame as fisher.test(matrix(c(D,B,C,A),2,2),\"greater\") in R\n",argv[0]); 
		exit(0); 
	} 
// argc --> par	
	a = atoi(argv[1]);
	b = atoi(argv[2]);
	c = atoi(argv[3]);
	d = atoi(argv[4]);
	// R: phyper
	q = a-1;
	m = a+c;
	n = b+d;
	k = a+b;
	pval=1-phyper(q,k,m,m+n);
	printf("%e\n",pval);
	return(0);
}