如何在 MATLAB 中创建自定义 "Probability Distribution Object"
How to create custom "Probability Distribution Object" in MATLAB
我想在 MATLAB(使用统计工具箱)中加入一些简单的方法来从现有的概率分布中创建新的概率分布。例如:有限混合或复合分布。我的目标是实现与现有概率分布及其周围环境的无缝集成。是否有一些文档或示例应该如何完成?
该文档仅包含对预定义发行版的描述。我找不到关于 "Probability Distribution Object" 的 class 结构或如何编写自定义 "makedist" 函数的任何信息。
注意:如 Mathworks 所示,ProbDist superclass 似乎即将淘汰,将来将完全通过 makedist[=18 处理=]
我知道这是一个老问题,但我需要实施统计工具箱中缺少的一些分布,并努力找到适合我的目的的解决方案,并决定在此处分享。
什么有效:
您可以定义一个从 ProbDist or TruncatableDistribution 继承的 class 并实现这些需要的方法。
这些对象,例如一个模拟偏斜正态分布的对象或者你有什么,然后可以像任何其他对象一样被实例化,并输入到接受 probDist
对象作为参数的 matlab 函数中
pd=SkewNormal('xi',0,'omega',1.0,'alpha',4)
pdf(pd,linspace(0,2,20))
cdf(pd,1)
并且考虑到 truncate() 方法也已实现
truncate(pd,[0,2])
什么不起作用
即使玩了一会儿,我也没有设法让这些自定义发行版 classes 出现在 makedist
的发行版列表中,尽管它允许有路径搜索了其他 classes 实现 ProbDist
with
makedist -reset
虽然我没有测试它,但我认为它也不会出现在分布装配器 GUI 的列表中。鉴于您的 class 实现了 fit
函数,它应该能够以编程方式适应分布。
我想在 MATLAB(使用统计工具箱)中加入一些简单的方法来从现有的概率分布中创建新的概率分布。例如:有限混合或复合分布。我的目标是实现与现有概率分布及其周围环境的无缝集成。是否有一些文档或示例应该如何完成?
该文档仅包含对预定义发行版的描述。我找不到关于 "Probability Distribution Object" 的 class 结构或如何编写自定义 "makedist" 函数的任何信息。
注意:如 Mathworks 所示,ProbDist superclass 似乎即将淘汰,将来将完全通过 makedist[=18 处理=]
我知道这是一个老问题,但我需要实施统计工具箱中缺少的一些分布,并努力找到适合我的目的的解决方案,并决定在此处分享。
什么有效:
您可以定义一个从 ProbDist or TruncatableDistribution 继承的 class 并实现这些需要的方法。
这些对象,例如一个模拟偏斜正态分布的对象或者你有什么,然后可以像任何其他对象一样被实例化,并输入到接受 probDist
对象作为参数的 matlab 函数中
pd=SkewNormal('xi',0,'omega',1.0,'alpha',4)
pdf(pd,linspace(0,2,20))
cdf(pd,1)
并且考虑到 truncate() 方法也已实现
truncate(pd,[0,2])
什么不起作用
即使玩了一会儿,我也没有设法让这些自定义发行版 classes 出现在 makedist
的发行版列表中,尽管它允许有路径搜索了其他 classes 实现 ProbDist
with
makedist -reset
虽然我没有测试它,但我认为它也不会出现在分布装配器 GUI 的列表中。鉴于您的 class 实现了 fit
函数,它应该能够以编程方式适应分布。