1
$\begingroup$

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)
  snp_add_p = ctable["snp_current", "p value"]
  snp_p[i,"p_val"] <- snp_add_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
$\endgroup$
  • $\begingroup$ If the function returns a value of $t$ why are you using pnorm() on it? There is pt(). $\endgroup$ – mdewey Sep 1 '16 at 12:40
1
$\begingroup$

Since you are not adjusting for covariates, the proportional odds ordinal logistic model is a computationally expensive overkill for GWAS. It's special case the Wilcoxon-Mann-Whitney 2-sample rank-sum test will suffice. There is one technical detail: the Wilcoxon test doesn't handle ties as nicely as the proportional odds model. It would be worth using the score test from the P.O. model which is not too hard to derive and program. The score test requires no iterations and can be computed instantly because the intercepts under the null hypothesis have simple formulas (logit of cumulative probabilities).

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.