Crawford-Howell t-test

23 views (last 30 days)
AwedBy Matlab on 4 Oct 2014
Commented: AwedBy Matlab on 5 Oct 2014
Hello,
I need to perform a Crawford-Howell t-test between single cases and normative groups of controls.
I found this code for it, but it is in R.
Does anyone have any code for it in Matlab, or is able to convert the code to matlab code?
Thanks!
the cyclist on 5 Oct 2014
The original paper seems to be freely available here, if anyone is interested.

the cyclist on 4 Oct 2014
The MATLAB Statistics Toolbox has a built-in function ttest2(). The result of using this function on a single case vs controls, for example,
[h p ci stats] = ttest2(5,[1 2 3])
gives me the same result (to several decimal places) as the R code in that link.
(This is just a bit puzzling to me, since ttest2() is just a standard t-test, and you are suggesting that Crawford-Howell is something other than that. But, the results are what they are.)
the cyclist on 5 Oct 2014
I was able to replicate the example on the bottom right of page 483 of the Crawford-Howell table:
kase = 33;
x = 26.457514;
kontrol = [50-x repmat(50,1,13) 50+x]; % This has mean 50 and standard deviation 10, as specified in the paper's example.
[h p ci stats] = ttest2(kase,kontrol)

Star Strider on 4 Oct 2014
Edited: Star Strider on 4 Oct 2014
I don’t have ‘R’, so I transliterated it as best I could understand it. (I won’t post it as a File Exchange contribution, since I have no desire to pay US\$39 to download the paper to be sure I got it correct.)
It runs. I will let you determine if it gives correct answers:
function [tval,degfre,pval] = CrawfordHowell(kase,kontrol)
lenk = length(kontrol);
tval = (kase - mean(kontrol))./(std(kontrol).*sqrt((lenk+1)./lenk));
degfre = lenk-1;
pval = 2*(1-tcdf(abs(tval),degfre));
end
[t,d,p] = CrawfordHowell(1, rand(1,10)) % Test
I used ‘kase’ and ‘kontrol’ because ‘case’ is a reserved word in MATLAB and I just decided to have fun with ‘kontrol’.
AwedBy Matlab on 5 Oct 2014
Thanks a lot to both of you for your help!