gpt4 book ai didi

r - 如何将逆高斯分布拟合到我的数据中,最好使用 fitdist {fitdistrplus}

转载 作者:行者123 更新时间:2023-12-05 05:09:21 51 4
gpt4 key购买 nike

我正在尝试使用 GLMM 分析一些 react 时间数据。找到最适合我的数据的分布。我将 fitdist() 用于 gamma 和对数正态分布。结果表明对数正态更适合我的数据。然而,最近我读到逆高斯分布可能更适合 react 时间数据。

我使用 nigFitStart 获取起始值:

    library(GeneralizedHyperbolic)
invstrt <- nigFitStart(RTtotal, startValues = "FN")

这给了我这个:

    $paramStart
mu delta alpha beta
775.953984862 314.662306398 0.007477984 -0.004930604

所以我尝试使用 fitdist 的启动参数:

    require(fitdistrplus)

fitinvgauss <- fitdist(RTtotal, "invgauss", start = list(mu=776, delta=314, alpha=0.007, beta=-0.05))

但我收到以下错误:

    Error in checkparamlist(arg_startfix$start.arg, arg_startfix$fix.arg,  : 
'start' must specify names which are arguments to 'distr'.

我还使用了 ig_fit{goft} 并得到了以下结果:

    Inverse Gaussian MLE 
mu 775.954
lambda 5279.089

因此,这次我将这两个参数用作 fitdist 中的 start 参数,但仍然得到完全相同的错误:

    > fitinvgauss <- fitdist(RTtotal, "invgauss", start = list(mu=776, lambda=5279))
Error in checkparamlist(arg_startfix$start.arg, arg_startfix$fix.arg, :
'start' must specify names which are arguments to 'distr'.

有人提到将参数名称从 mu 和 lambda 更改为 mean 和 shape 已经解决了他们的问题,但我试过了,但仍然遇到同样的错误。

知道如何解决这个问题吗?或者你能建议一种替代方法来对我的数据进行逆高斯拟合吗?

谢谢

    dput(RTtotal)
c(594.96, 659.5, 706.14, 620.92, 811.05, 420.63, 457.08, 585.53,
488.59, 484.87, 496.72, 769.01, 458.92, 521.76, 889.08, 514.11,
553.09, 564.68, 1057.19, 437.79, 660.33, 639.58, 643.45, 419.47,
469.16, 457.78, 530.58, 538.73, 557.17, 1140.09, 560.03, 543.18,
1093.29, 607.59, 430.2, 712.06, 716.6, 566.69, 989.71, 449.96,
653.22, 556.52, 654.8, 472.54, 600.26, 548.36, 597.51, 471.97,
596.72, 600.29, 706.77, 511.6, 475.89, 599.13, 570.12, 767.57,
402.68, 601.56, 610.02, 891.95, 483.22, 588.78, 505.95, 554.15,
445.54, 489.02, 678.13, 532.06, 652.61, 654.79, 535.08, 1215.66,
633.6, 645.92, 454.37, 535.81, 508.97, 690.78, 685.97, 703.04,
731.99, 592.75, 662.03, 1400.33, 599.73, 1021.34, 1232.35, 855.1,
780.32, 554.4, 1965.77, 841.89, 1262.76, 721.62, 788.95, 1104.24,
1237.4, 1193.04, 513.91, 474.74, 380.56, 570.63, 700.96, 380.89,
481.96, 723.63, 835.22, 781.1, 468.76, 555.1, 522.22, 944.29,
541.06, 559.18, 738.68, 880.58, 500.14, 1856.97, 1001.59, 703.7,
1022.35, 1813.35, 1128.73, 864.75, 1166.77, 1220.4, 776.56, 2073.72,
1223.88, 617, 1387.71, 595.57, 1506.13, 678.41, 1797.87, 2111.04,
1116.61, 1038.6, 894.25, 778.51, 908.51, 1346.69, 989.09, 1334.17,
877.31, 649.31, 978.22, 1276.84, 1001.58, 1049.66, 1131.83, 700.8,
1267.21, 693.52, 1182.3)

最佳答案

所以我猜你没能告诉我们你还加载了 statmod 包(或者可能是其他一些带有“invgauss”系列的包,包括 dinvgauss功能)。您应该能够通过阅读该功能的帮助页面的第一行来判断 dinvgauss 来自哪个包,因此在安装该包并阅读帮助页面(应该始终这样做)之后 ?dinvgauss:

fitinvgauss <- fitdist(RTtotal, "invgauss", 
start = list(mean=776, dispersion=314, shape=1))
fitinvgauss
# --------------
Fitting of the distribution ' invgauss ' by maximum likelihood
Parameters:
estimate Std. Error
mean 779.2535 NA
dispersion -1007.5490 NA
shape 4972.5745 NA

我所做的只是阅读错误消息,然后阅读帮助页面并为该函数的参数使用正确的名称。 (然后稍微尝试一下,使参数起始值进入可行的取值范围。)

关于r - 如何将逆高斯分布拟合到我的数据中,最好使用 fitdist {fitdistrplus},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57618003/

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