gpt4 book ai didi

R: mixdist 包中的 mix() 返回错误

转载 作者:行者123 更新时间:2023-12-01 23:34:10 26 4
gpt4 key购买 nike

我已经在 R 中安装了 mixdist 包来组合发行版。具体来说,我正在使用 mix()功能。 See documentation.基本上,我得到

Error in nlm(mixlike, lmixdat = mixdat, lmixpar = fitpar, ldist = dist, :
missing value in parameter

我用谷歌搜索了错误消息,但没有弹出任何有用的结果。

我对mix()的第一个论点是一个名为 data.df 的数据框。它的格式与内置数据集 pike65 完全相同。我也做了data.df <- as.mixdata(data.df)

我的第二个参数有两行。它是一个名为 datapar 的数据框,其格式与 pikepar 完全相同。我的pi值为 0.5 和 0.5。我的mu值为 250 和 463(基于我的数据集)。我的sigma值为 0.5 和 1。

我调用mix()好像:
fitdata <- mix(data.df, datapar, "norm", constr = mixconstr(consigma="CCV"), emsteps = 3, print.level = 2)

打印显示我的 pi第一次迭代后,值从 0.5 变为 NaN,并且我的梯度变为 0。

如果您能帮助解决此错误,我将不胜感激。

谢谢,
不详

最佳答案

使用您链接到的测试数据

library(mixdist) 
time <- seq(673,723)
counts <-c(3,12,8,12,18,24,39,48,64,88,101,132,198,253,331,
419,563,781,1134,1423,1842,2505,374,6099,9343,13009,
15097,13712,9969,6785,4742,3626,3794,4737,5494,5656,4806,
3474,2165,1290,799,431,213,137,66,57,41,35,27,27,27)
data.df <- data.frame(time=time, counts=counts)

我们可以看到

startparam <- mixparam(c(699,707),1 )
data.fit <- mix(data.mix, startparam, "norm")

给出同样的错误。此错误似乎与数据密切相关(因此此数据不起作用的原因可能与您的数据不起作用的原因不同,但这是您提供的唯一示例)。

此数据的问题在于,两组之间的概率在某些时候变得无法区分。然后就会发生这种情况,算法的“E”步骤无法正确估计 pi 变量。这里

pnorm(717,707,1)
# [1] 1
pnorm(717,699,1)
# [1] 1

两者都恰好为 1,这似乎导致了错误。当mix取1减去该值并将比率与估计组进行比较时,它会得到NaN值,这些值将传播到比例的估计。当在内部将这些 NaN 值传递给 nlm() 进行估计时,您会收到错误消息

Error in nlm(mixlike, lmixdat = mixdat, lmixpar = fitpar, ldist = dist,  : 
missing value in parameter

可以使用以下命令复制相同的错误消息

f <- function(x) sum((x-1:length(x))^2)
nlm(f, c(10,10))
nlm(f, c(10,NaN)) #error

所以看起来 maxdist 包在这种情况下不起作用。您可能希望联系软件包维护者,看看他们是否意识到这个问题。与此同时,您将需要找到另一种方法来估计混合模型的参数。

关于R: mixdist 包中的 mix() 返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24615067/

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