Interpret Odds Ratio – Understanding Odds Ratio in Fisher’s Exact Test

chi-squared-testfishers-exact-testoddsodds-ratior

I've tried using R operating Fisher's exact test to test for independence of the 2 datasets below and struggling to interpret the Fisher report. Please have a look at the data and the Fisher's test below.

Dataset 1: is a 2×3 contingency table

Consider then an experiment where we have 2 categorical variables: Group (I and II) & Outcome (Worse, Same, and Improve). These results might follow the administration of a new drug. We collect data and find out the frequencies as shown in the table below.

You can reproduce Dataset 1, and run the Fisher's test using the codes:

obs <- rbind(c(33, 44, 25),
             c(11, 28, 30))
rownames(obs) <- c("Group I", "Group II")
colnames(obs) <- c("Worse", "Same", "Improve")
obs

##          Worse Same Improve
## Group I     33   44      25
## Group II    11   28      30

fisher.test(obs)

##   Fisher's Exact Test for Count Data

## data:  obs
## p-value = 0.01049
## alternative hypothesis: two.sided   

Dataset 2: is a 2×2 contingency table

Consider then an experiment where we have 2 categorical variables: Group (I and II) & Outcome (Worse and Improve). These results might follow the administration of a new drug. We collect data and find out the frequencies as shown in the table below.

vals <- matrix(c(3, 1, 3, 2),
               nrow = 2,
               dimnames = list(Group = c("Group I", "Group II"),
                   Outcome = c("Worsened", "Improved")))
##  Outcome
##  Group          Worsened Improved
##  Group I             3        3
##  Group II            1        2

fisher.test(vals)

## 
##  Fisher's Exact Test for Count Data
## 
## data:  vals
## p-value = 1
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##    0.06060903 156.52286969
## sample estimates:
## odds ratio 
##   1.852496

As you can see that I receive 2 different report templates for the two contingency tables a (2×3) and a (2×2). I have 3 questions:

  1. Why the report of a 2×2 includes the Odds Ratio (OR) and the Confidence Interval, which I believe is a CI of the Odds Ratio, while the 2×3 doesn't have the OR in there?
    Does that mean testing for independence using the value of OR can be applied ONLY for 2×2 contingency tables??
  2. Could you help me interpret the Fisher's test report and point out the connection between the values of p-value, Odds ratio, and the Confidence Intervals?
  3. In what case will we be using "one-sided Fisher's exact test"? What is the purpose of pointing out a Fisher's test should be one-sided or two-sided?
  4. Can a table that's NOT 2×2 be tested using a "one-sided Fisher's exact test"?

Best Answer

  1. The odds ratio cannot be defined for more than two levels of response. If you want an odds ratio, there are two options I can think of. One, convert the response into two levels by combining two of the levels. Two, ordinal regression.

  2. For your second dataset, the point estimate of the odds ratio is greater than 1 and there is slightly more evidence that the odds ratio is greater than 1 compared to the evidence that it is less than 1. There is a smaller p-value if you specify the option alternative="greater". The option chosen should depend on the goals of the research.

  3. Yes, if you use the ordinal regression, the hypothesis and p-value can be one-sided. For the general test of independence, no; it is a two-sided test. fisher.test allows options, but the p-value is identical in all 3 cases:

fisher.test(obs)  
fisher.test(obs, alternative="less")  
fisher.test(obs, alternative="greater") 

You can also try

library(coin)  
cmh_test(as.table(obs))  

The p-value is slightly different from fisher.test. That is because cmh_test uses an asymptotic p-value. If you use fisher.test(obs, hybrid=T), the p-value is closer to the asymptotic p-value from cmh_test.

Related Question