chi2gof two sample test for integer arrays of different sizes?
显示 更早的评论
Hey all,
I have 2 integer arrays, one of size 1x25 and the other of 1x26. I have been told to use the chi squared test in order to find how statistically different my data is. But I don't know how to do this, with ttest you could just do ttest2(Arr1, Arr2). Can someone please help me out, thanks!
回答(5 个)
Wayne King
2012-6-21
chi2gof is for one sample. You can test each vector separately against a specific distribution, but not against each other.
x = randn(100,1);
[h,p] = chi2gof(x,'cdf',@normcdf)
y = rand(100,1);
[h1,p1] = chi2gof(y,'cdf',@normcdf)
You see in the second case you reject the null hypothesis.
Are you just looking for a nonparametric two-sample test? How about ranksum()?
Wayne King
2012-6-21
You can certainly specifiy a discrete distribution to use with chi2gof, by specifing the bins (edges) and expected counts.
Now that you have described your use case more, it sounds to me like you may want crosstab() . crosstab() uses a chi-square test for independence of two samples.
For example:
x1 = unidrnd(3,50,1);
x2 = unidrnd(3,50,1);
[table,chi2,p] = crosstab(x1,x2)
See:
for example.
Annick van der Hoest
2012-6-21
0 个投票
2 个评论
Wayne King
2012-6-21
yes, I think you need to use equal sample sizes. I don't know your data, so I can't suggest a principled way to make the sample sizes equal.
Annick van der Hoest
2012-6-21
Lucjan
2014-12-4
0 个投票
It is not correct direction. Crosstab assumes there is a meaning for a pair (x,y) that is why it needs the same number of samples. You are calling for two sample chi-square distribution, which, as far as I chucked, is not implemented in MATLAB. But you should be able to implement it by yourself based on: http://www.itl.nist.gov/div898/software/dataplot/refman1/auxillar/chi2samp.htm
类别
在 帮助中心 和 File Exchange 中查找有关 Chi-Square Distribution 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!