【问题标题】:Using MATLAB's chi2gof with non-standard user-specified PDFs将 MATLAB 的 chi2gof 与非标准用户指定的 PDF 一起使用
【发布时间】:2016-03-02 06:14:15
【问题描述】:

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

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

其中ab 是常量。必须有一种方法可以将chi2gof 用于任意PDF?我在 Google 上进行了详尽的搜索,但空手而归。

【问题讨论】:

  • 您可以使用inverse transform sampling 从任意分布中生成数字。
  • 是您不知道如何为您的分布找到 CDF 的实际问题(chi2gof 可以选择任意假设分布的 CDF)?顺便问一下,您的发行版的名称是什么? @jadhachem:我不明白你的评论。我认为问题不在于从分布中生成随机数,而在于如何检查现有数据与特定分布的拟合度。
  • @horchler 我的错,我想我误解了这个问题。
  • @horchler:我有一个涉及不完整伽马函数的 CDF 的“分析”表达式。我的问题是如何编码问题。例如,假设我的 CDF 由 F(x)=a*exp(-bx-cx^2) [b,c,>0] 给出。 (假设 a,b,c 是已知常数。) chi2gof 的调用会是什么样子?我知道这会涉及到使用函数句柄,但我不确定如何编写代码。

标签: matlab statistics probability-density cdf goodness-of-fit


【解决方案1】:

您可以通过这种方式指定一个handle to a function,它将单个参数传递给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))

如果参数 abc 是估计的(例如,使用一些拟合过程),那么您应该将估计参数的数量指定为 chi2gof。在这种情况下:

[H,P, STATS] = chi2gof(data,'cdf',F,'nparams',3)

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

【讨论】:

  • 非常感谢!我会用我真正的 F(x) 来模拟你的代码。作为侧边栏,我也对函数句柄和匿名函数之间的区别感到困惑,但您的评论解决了该查询。
猜你喜欢
  • 1970-01-01
  • 2011-06-22
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-16
相关资源
最近更新 更多