gpt4 book ai didi

软件 |基于均值和概率区间计算gamma dist的参数

转载 作者:太空宇宙 更新时间:2023-11-03 20:22:47 25 4
gpt4 key购买 nike

我有一个由 2 个方程和 2 个未知数组成的系统,我想使用 MATLAB 求解,但不知道如何编程。我得到了一些有关 Gamma 分布的信息(平均值为 1.86,90% 的间隔介于 1.61 和 2.11 之间),最终想要获得平均值和方差。我知道我可以使用正态近似,但我宁愿求解 A 和 B,即 Gamma 分布的形状和尺度参数,并以此方式找到均值和方差。在伪 MATLAB 代码中,我想解决这个问题:

gamcdf(2.11, A, B) - gamcdf(1.61, A, B) = 0.90;
A*B = 1.86;

您将如何解决这个问题?如果有帮助,我有符号数学工具箱。

最佳答案

平均值是 A*B。那么,您能否根据均值 (mu) 和 B 求解 A?

A = mu/B

当然,除非您知道 B,否则这没有用。或者真的吗?

看看你的第一个表情。你能代替吗?

gamcdf(2.11, mu/B, B) - gamcdf(1.61, mu/B, B) = 0.90

这会让你更亲近吗?也许。没有可用的有用符号解,除了不完整的 Gamma 函数本身。你如何在matlab中用一个未知数求解一个方程?使用 fzero。

当然,fzero 寻找零值。但通过减去 0.90,问题就解决了。

我们可以定义一个 fzero 可以使用的函数吗?使用函数句柄。

>> mu = 1.86;
>> gamfun = @(B) gamcdf(2.11, mu/B, B) - gamcdf(1.61, mu/B, B) - 0.90;

那就试试吧。在我们这样做之前,我总是建议策划一些事情。

>> ezplot(gamfun)

嗯。该图表明可能很难找到函数的零。如果您确实尝试过,您会发现这里需要 fzero 的良好起始值。

对不起我的第一次尝试。更好的 fzero 起始值,再加上更多的绘图确实给出了产生所需形状的 Gamma 分布。

>> B = fzero(gamfun,[.0000001,.1])
B =
0.0124760672290871
>> A = mu/B
A =
149.085442218805
>> ezplot(@(x) gampdf(x,A,B))

事实上,这是一条非常“正常”的曲线,即高斯曲线。

关于软件 |基于均值和概率区间计算gamma dist的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3690361/

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