chi2test,matlab里的卡方检验

代码

来源是https://ww2.mathworks.cn/matlabcentral/fileexchange,完整代码如下:

function [p, Q]= chi2test(x)
	
% Usage: [p, Q]= chi2test(x)
% 
% The chi-squared test. 
% 
% Given a number of samples this function tests the hypothesis that the samples are 
% independent. If Q > chi2(p, nu), the hypothesis is rejected. 
% 
% Each column represents a variables, each row a sample.
% 
% If you find any errors, please let me know: .
% 
% ARGUMENTS:
% x     Absolut numbers.
% p     The prob ability value, calculated from Q.
% Q     The resulting Q-value.
% 
% EXAMPLE 1
% In region A, 324 of 556 cows were red, whereas in region B 98 of 260 were red.
% [p, Q]= chi2test([324, 556-324; 98, 260-98])
% p=
%    4.2073e-08
% Q=
%    30.0515
% With an error risk of about 4e-08, we can claim that the samples are independent.
% 
% EXAMPLE 2
% Throw two different dices to see if they have the same probability of 1 (and 2, 3, 4, 5, 6).
% We don't check if they are symetrical, only if the both behave in the same way.
% [p,Q] = chi2test([15,10; 7,11; 9,7; 20,15; 26,21; 19,16])
% p=
%    0.8200
% Q =
%    2.2059
% The dices don't significantly behave differently. That is, they seem to behave in the same way.
%
% HISTORY:    v.1.0, first working version, 2007-08-30.
% 
% COPYRIGHT:  (c) 2007 Peder Axensten. Use at own risk.

% KEYWORDS:   chi-squared test, chi-squared, chi2, test

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	
	% Check the arguments.
	if(nargin ~= 1),			error('One and only one argument required!');					end
	if(ndims(x) ~= 2),			error('The argument (x) must be a 2d matrix!');					end
	if(any(size(x) == 1)),		error('The argument (x) must be a 2d matrix!');					end
	if(any(~isreal(x))),		error('All values of the argument (x) must be real values!');	end
	
	% Calculate Q = sum( (a-np*)^2/(np*(1-p*)) )
	s=		size(x, 1);
	r=		size(x, 2);
	np=		sum(x, 2)/sum(sum(x)) * sum(x);		% p=sum(x, 2)/sum(sum(x)) and n=sum(x)
	Q=		sum(sum((x-np).^2./(np)));
	
	% Calculate cdf of chi-squared to Q. Degrees of freedom, v, is (r-1)*(s-1).
	p=		1 - gammainc(Q/2, (r-1)*(s-1)/2);
end

讲解

没啥好讲的,直接输入X作为矩阵,输出的p值代表默认的H0假设是否显著,卡方检验的理论简书上有讲的比较好的。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值