gpt4 book ai didi

statistics - 可以在 Mathematica 中扩展 PDF、CDF、FindDistributionParameters 等的功能吗?

转载 作者:行者123 更新时间:2023-12-01 08:18:00 24 4
gpt4 key购买 nike

我已经开始使用新的 Mathematica 统计和数据分析功能做越来越多的工作。

我参加了周二的“使用 Mathematica 进行统计和数据分析”在线研讨会(很棒的演讲,我强烈推荐它)但是我遇到了一些问题,我希望这个论坛上的人可以花点时间考虑一下。

我创建了一个相当广泛的笔记本来简化我的数据分析,称之为“AnalysisNotebook”。它输出一系列广泛的图表和数据,包括:直方图、PDFCDF图、Q-Q 图、研究尾部拟合的图、假设检验数据等。

只要我继续使用 Mathematica 的现成发行版,这就会很好用,并且可能适用于简单的 MixtureDistribution s 甚至 ParameterMixtureDistribution至于这些 Mathematica 可能会计算出时刻和 PDFCDF , FindDistributionParameters等,将混合物分解成碎片。

当我试图定义和使用一个简单的 TransformedDistribution 时,我遇到了麻烦。 IE。,

LogNormalNormalDistribution[Gamma_, Sigma_, Delta_] := 
TransformedDistribution[ u*v + Delta,
{Distributed[ u, LogNormalDistribution[ Log[Gamma], Sigma] ],
Distributed[ v, NormalDistribution[0, Sqrt[2]]}
];

我想按照这种转换分布的方式做很多事情。我很欣赏这样的挑战(其中一些是我在这个论坛上学到的 - 谢谢大家):
  • 他们可能没有封闭的表格;
  • PDFCDF计算可能需要插值、变通方法或自定义方法;
  • FindDistributionParametersDistributionFitTest不会知道怎么处理这种事情。

  • 基本上,人们想要使用的标准东西真的不/不能工作,而且人们不能公平地期望他们这样做。

    可以编写自定义代码来做这些事情(这个论坛再次帮助了我很多),但是然后将自定义替代方案的所有复杂性合并到我的 AnalysisNotebook 中,这似乎很愚蠢。 AnalysisNotebook 会随着每个新的自定义函数而增长。

    如果我可以编写我的自定义版本 PDF,这将极大地帮助我完成这项工作。 , CDF , FindDistributionParameters , DistributionFitTest以及我可能需要的任何其他标准,更通用的内置版本将简单地无缝调用。这样,像我的 AnalysisNotebook 这样的东西可以保持简单和整洁,是我工具箱中的标准组件。如果你理解我的意思,我可以把时间花在数学上而不是管道上。

    为了澄清我的意思,类似于如何定义一个函数的版本来做不同的事情(使用不同数量的参数或其他类型的情境意识),Mathematica 必须对使用分布作为参数的函数做一些类似的事情知道要为特定的内置发行版使用哪种解决方案。我希望能够添加或扩展 PDF[] 的功能, CDF[] , FindDistributionParameters[] , DistributionFitTest[]以及该级别的相关功能 - 为自定义发行版及其所需的支持代码添加功能,内置函数将/可以无缝调用这些代码。

    也许只是一个梦想,但如果有人知道我可以用什么方法来解决这个问题,我将非常感谢您的反馈。

    编辑- 我遇到的问题类型:

    以下代码永远不会完成执行
    r1 = RandomVariate[LogNormalNormalDistribution[0.01, 0.4, 0.0003], 1000];
    FindDistributionParameters[r1, LogNormalNormalDistribution[gamma, sigma, delta]]

    为了解决这个问题,我编写了以下函数
    myLNNFit[data_] := Module[{costFunction, moments}, 
    moments = Moment[EmpiricalDistribution[data], #] & /@ Range[5];
    costFunction[gamma_, sigma_, delta_] =
    Sqrt@Total[((Moment[LogNormalNormalDistribution[gamma, sigma, delta],#]&/@Range[5]) - moments)^2];
    NMinimize[{costFunction[gamma, sigma, delta], gamma > 0, sigma > 0}, {gamma, sigma, delta}] ]

    这本身就很好用,但不能很好地与其他所有东西一起使用。

    最佳答案

    您可以使用 TagSet指定要与定义关联的符号。这让您可以定义 PDF分布即使 PDFProtected .这是一个简单的例子。请注意 TriangleWave是一个内置符号,而 TriangleDistribution是我刚刚编出来的。这失败了:

    PDF[TriangleDistribution[x_]] := TriangleWave[x]

    这有效:
    TriangleDistribution /: PDF[TriangleDistribution[x_]] := TriangleWave[x]

    现在你可以这样做:
    Plot[PDF[TriangleDistribution[x]], {x, 0, 1}]

    关于statistics - 可以在 Mathematica 中扩展 PDF、CDF、FindDistributionParameters 等的功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5583456/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com