【发布时间】:2019-12-28 06:57:03
【问题描述】:
我正在尝试使用 GLMM 分析一些反应时间数据。找到最适合我的数据的分布。我将 fitdist() 用于伽马和对数正态分布。结果表明对数正态更适合我的数据。 然而,最近我读到逆高斯分布可能更适合反应时间数据。
我使用 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)
【问题讨论】:
-
fitinvgauss <- fitdist(RTtotal, "invgauss", start = list(mu=776, delta=314, delta=0.007, beta=-0.05))你通过了两次delta而没有通过alpha。这是您的代码中的错误,还是只是问题中的拼写错误? -
我们没有
RTtotal,我在基本包或您加载的包中看不到任何名为“invgauss”的发行版。投票结束是不可重现的错误。请阅读How to Ask。 -
@mikeck 抱歉,这里打错了。
-
@42- 我添加了一个产生相同错误的 RTtotal 样本。只要我们提供起始参数,库 fitdistrplus 中的 fitdist() 也应该能够使用逆高斯,或者这就是我从它的帮助中得到的。
-
是的,
fitdist可以使用逆高斯,但您需要给它一个正确的名称。我的意思是我找不到任何可能使用该名称的函数。相反,我发现 `inverse.gaussian" 和 "gig" 作为可能的名称。也许这个问题应该作为一个错字而结束?
标签: r fitdistrplus