使用MATLAB的chi2gof进行非标准用户指定的概率密度函数(PDF)的计算

3

我想使用MATLAB的chi2gof来执行卡方拟合优度检验。我的问题是,我假设(即理论上)的分布不是MATLAB中内置的标准概率分布之一。我所需的特定形式为:

p = x^a*exp(-b*x^2)

其中ab是常数。是否有一种方法可以使用chi2gof来处理任意的概率密度函数?我已经进行了详尽的谷歌搜索,但没有找到相关信息。


你可以使用反变换抽样从任意分布中生成数字。 - jadhachem
实际问题是您不知道如何找到您的分布的累积分布函数(chi2gof有一个选项可以使用任意假设分布的累积分布函数)。顺便问一下,您的分布名称是什么?@jadhachem:我不理解您的评论。我认为问题不在于从分布中生成随机数,而是如何检查现有数据与特定分布的拟合程度。 - horchler
@horchler 对不起,我想我误解了问题。 - jadhachem
1
@horchler:我有一个涉及不完全伽玛函数的“解析”CDF表达式。我的问题是如何编写代码来解决这个问题。例如,假设我的CDF由F(x)=a*exp(-bx-cx^2) [b,c,>0]给出。(假设a、b、c是已知常数。)那么chi2gof的调用会是什么样子?我知道它将涉及使用函数句柄,但我不确定如何编写它。 - user6006085
1个回答

1
您可以这样指定一个函数句柄,它接受一个参数来chi2gof
a = ...
b = ...
c = ...
F = @(x)a*exp(-b*x-c*x.^2); % Technically this is an anonymous function
[H,P,STATS] = chi2gof(data,'cdf',F)

或在特殊情况下:
a = ...
b = ...
c = ...
F = @(x,a,b,c)a*exp(-b*x-c*x.^2);
[H,P,STATS] = chi2gof(data,'cdf',{F,a,b,c})

其中的最后一行相当于:
[H,P,STATS] = chi2gof(data,'cdf',@(x)F(x,a,b,c))

如果参数a、b和c是通过某种拟合过程估计的,则应该将估计参数的数量指定为chi2gof。在这种情况下:
[H,P, STATS] = chi2gof(data,'cdf',F,'nparams',3)

请阅读文档以了解其他选项。

非常感谢!我将使用我的真实 F(x) 模拟您的代码。顺便说一句,我也对函数句柄和匿名函数之间的区别感到困惑,但是您的评论解决了这个问题。 - user6006085

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接