|
在做卡方检验时遇到了如下问题,计算自由度为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; %定义自变量x
gama=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
晕倒~~,但是还是有部分限制,当卡方值小到一定程度上也不行,只能这样了,对付用吧!呵呵
|
|