R 中的生态:mgcv 包中的错误“eval(family$initialize) 中的错误:值超出范围”

问题描述 投票:0回答:1

我正在尝试在 R 中拟合一个模型,该模型显示深度和沉积物类型如何影响海草密度(响应),并收集了大约 5000 行的数据框。为了便于数据收集,我们将海草密度的离散值设置为 5 个类别,从 1 到 5(每个类别代表覆盖百分比带)。数据框中没有 NA 值。数据中存在空间自相关,因此我添加了一个带有纬度和经度的平滑项来解释这一点。

我使用带有 logit 链接的 OCAT 系列来解释序数类型数据并将 theta 设置为 4(因为密度的离散值之间有 4 个“步骤”)。如果其中有任何不正确的地方,请告诉我。

这是我的模型:

model_gam_spatial <- gam(Density ~ s(Latitude, Longitude) + Depth + Substrate.type, 
                         data = seagrass_clean, family = ocat(theta = 4, link = "logit"))

当我尝试运行模型时,不断收到此错误消息

"Error in eval(family$initialize) : values out of range"

有人可以建议我做错了什么吗?或者还有其他提示吗?如果有更好的模型适合我的数据,也请告诉我。任何对此的帮助将不胜感激。

mgcv
1个回答
0
投票

您需要将

ocat()
的参数
R
设置为响应中的组数,在您的情况下设置为 5,因为您有 5 个组。
theta
需要是潜在变量上的长度为
R-2
切割点的向量(如果您提供的话)。如果您将其保留为默认值 (
NULL
),mgcv 将为您估计
R-2
切割点,这通常是您希望发生的情况。

© www.soinside.com 2019 - 2024. All rights reserved.