找回密码
 注册
查看: 8002|回复: 0

MATLAB卡方检验精度问题解决办法

[复制链接]
发表于 2010-4-30 20:57:56 | 显示全部楼层 |阅读模式


在做卡方检验时遇到了如下问题,计算自由度为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

晕倒~~,但是还是有部分限制,当卡方值小到一定程度上也不行,只能这样了,对付用吧!呵呵

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-21 22:22 , Processed in 0.024910 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表