File Exchange

## MyFisher24

version 2.0.0.0 by
A very compact routine to compute Fisher's exact test on a 2x4 matrix

Updated 06 Apr 2018

View Version History

Fisher's exact test of 2x4 contingency tables permits calculation of precise probabilities in situation where, as a consequence of small cell frequencies, the much more rapid normal approximation and chi-square calculations are liable to be inaccurate. The Fisher's exact test involves the computations of several factorials to obtain the probability of the observed and each of the more extreme tables. Factorials growth quickly, so it's necessary use logarithms of factorials. This computations is very easy in Matlab because x!=gamma(x+1) and log(x!)=gammaln(x+1). This function is now fully vectorized to speed up the computation. Actually, the function also computes the mid-P correction to make the test less conservative.

### Cite As

Giuseppe Cardillo (2020). MyFisher24 (https://github.com/dnafinder/myfisher24), GitHub. Retrieved .

moyoko tomiyasu

Dr. Cardillo.,
But it is no longer the problem because I could get the answer.
I appreciate you to make this program.

Giuseppe Cardillo

yes but you have an old version. The version in GitHub has this bug correction since many time...

moyoko tomiyasu

I found the comment exchange on similar problem in MyFisher23 webpage.
So I added "[I ~]=find(Tables<0); Tables(I,:)=[];" before line 127, and got the following result:
--------------------------------------------------------------------------------
2x4 matrix Fisher's exact test
--------------------------------------------------------------------------------
Tables two_tails_p_value Mid_p_correction
______ _________________ ________________

6283 0.064522 0.06438

Is it the correct answer ?

moyoko tomiyasu

I got error message for my data.
>> myfisher24([3 18 16 11;9 25 14 4])

Error using gammaln
Input must be nonnegative.

Error in myfisher24 (line 127)
zf=gammaln(Tables+1); %compute log(x!)

Could you tell me the way to solve it?

Jon

Giuseppe thank you for your quick response.
Your routine takes all my data now.
Jon

Giuseppe Cardillo

Jon was right. I have fixed the bug and uploaded the new version

Jon

I get error messages for some data.
For instance:
y =
27 13 9 15
12 10 3 16
>> myfisher24(y)
??? Attempted to access idxBstart(15); index out of bounds because
numel(idxBstart)=14.
Error in ==> myfisher24 at 116
Tables(idxBstart(J+1):idxBstop(J+1),2)=J;

I hope this can be fixed?
Jon

##### MATLAB Release Compatibility
Created with R2014b
Compatible with any release
##### Platform Compatibility
Windows macOS Linux