# Ordered Logistic Regression GWAS

I am attempting to do an ordered logistic regression in R on SNP matrixes (presence absence matrix 1 or 0) with three outcomes (1,2,3). I am having an issue of 0 p-values when low numbers (<5%) occur for one the binary categories (one row of the contingency table) but this is not always the case as sometimes that p values are >0.9 as expected. I have 30 individuals in each of the first two categories and 32 in category tree (92 in total).

My statistical knowledge is very limited.

Here is the R code I am using, I do post correction on the p-values using benjamini-hochberg correction.

  # Do regression
#outcome is a Factor w/ 3 levels "1","2","3"
#snp_current is a binary variable
m = polr(outcome ~ snp_current, Hess=T, method="logistic")

# calc P-values
ctable = coef(summary(m))
p = pnorm(abs(ctable[, "t value"]), lower.tail = FALSE) * 2
ctable = cbind(ctable, "p value" = p)


Here is a sample out the outputs with a pvalue of 0 (not sure how to format this correctly)

p_val Odds_ratio  CI95    Minor_allele_freq_total p_val.adj_test  Minor_allele_freq_group1    Minor_allele_freq_group2    Minor_allele_freq_group3
0.973822506   0.049500759 (-3.3,3.4)  0.01    0.973836581 0   1   0
0.550286527   -0.585041655    (-2.69,1.35)    0.03    0.779030597 0   2   1
0.973822506   0.049500759 (-3.3,3.4)  0.01    0.973836581 0   1   0
0.550286527   -0.585041655    (-2.69,1.35)    0.03    0.779030597 0   2   1
0.277940517   -0.999960705    (-3.05,0.75)    0.04    0.559890839 0   2   2
0 16.32590682 (NA,NA) 0.01    0   1   0   0
0.973822506   0.049500759 (-3.3,3.4)  0.01    0.973836581 0   1   0
0 -14.85639268    (NA,NA) 0.01    0   0   0   1
0 17.36099841 (NA,NA) 0.02    0   2   0   0
0.973822506   0.049500759 (-3.3,3.4)  0.01    0.973836581 0   1   0
0 -15.87292124    (NA,NA) 0.02    0   0   0   2
0 16.32590683 (NA,NA) 0.01    0   1   0   0
0 -14.85639268    (NA,NA) 0.01    0   0   0   1
0 -14.85639269    (NA,NA) 0.01    0   0   0   1
0 -14.85639267    (NA,NA) 0.01    0   0   0   1

• If the function returns a value of $t$ why are you using pnorm() on it? There is pt(). – mdewey Sep 1 '16 at 12:40