R语言pchisq命令的Python等效实现及结果不一致问题咨询
问题根源
R的pchisq是卡方分布的累积分布函数(CDF),输入为分位点、输出为0-1区间的概率值;你使用的scipy.stats.chi2.ppf是卡方分布的分位数函数(PPF,CDF的逆函数),输入要求为0-1区间的概率值、输出为对应分位点,二者功能完全相反,因此结果不一致。你输入的分位点数值远大于1,超出了ppf函数的定义域,才会返回NaN。
正确等效实现
R的pchisq(q, df)对应的scipy函数为scipy.stats.chi2.cdf(x=q, df=df),测试用例运行结果如下:
from scipy.stats import chi2 # 对应第一个R测试用例 print(chi2.cdf(38972.27814544528, df=1)) # 输出:1.0 # 对应第二个R测试用例 print(chi2.cdf(40569.99000034796, df=1)) # 输出:1.0
运行结果和R中pchisq的返回完全一致。
补充说明
你之前参考的内容是R的qchisq函数的等效实现,该函数才对应scipy.stats.chi2.ppf,用于通过概率值反查分位点,请注意区分使用场景。
内容的提问来源于stack exchange,提问作者4jano20
相关产品推荐
相关产品推荐

