MATLAB卡方检验精度问题解决办法(算的就是卡方检验下的P值)

来源:互联网 发布:英格兰长弓手—指算法 编辑:程序博客网 时间:2024/04/30 10:25

原文地址:http://blog.sina.com.cn/s/blog_4d2fda500100aia8.html

在做卡方检验时遇到了如下问题,计算自由度为1,卡方值为71的右尾概率值时出现系统取舍问题:

>> p=1-chi2cdf(70,1)p=1.1102e-016>>p=1-chi2cdf(71,1) p= 0

我要得到精确点的自由度为1,卡方值为71的右尾概率值。

费了牛劲终于找到了解决办法:

由于伽玛函数当第一个参数为1/2,第二个参数为2时伽玛分布函数为卡方分布,所以只好用原始函数定义算了。

syms x;  %定义自变量xgama=x^(-0.5)*exp(-x);gama0=int(gama,0,inf);%计算gama密度函数需要的参数gama0=gama(1/2),结果为:pi^(1/2)gamapdf=x^(-0.5)*exp(-x/2)/(2^(0.5)*gama0); %第一个参数为1/2,第二个参数为2的gama密度函数gamacdf=int(gamapdf,0,71); %计算积分,结果为符号型p=double(1-gamacdf)>>p=3.5722e-017


0 0
原创粉丝点击