提问人:Amelie 提问时间:9/28/2023 最后编辑:MichałAmelie 更新时间:10/9/2023 访问量:30
ergMargins 错误:不合格参数和结构零/一
ergMargins error: non-conformable argument and structural zeros/ones
问:
我是一个相当ergm的新手,所以如果我的问题的答案对你来说是显而易见的,请原谅我。 我使用 ergms 对我的网络进行建模,并尝试通过使用 ergms 的 AME 来促进可解释性(函数:ergm.AME())。在这里,R 返回两条错误消息:
- t(x) %*% cbcoef 中的错误:不合格参数 以及一条附加警告消息:
- 在 edge.prob2(model) 中:有结构零或一。对于这些二元组,预测的概率无效,必须分别手动替换为 0 或 1。
我试图在堆栈溢出上找到有关这两个主题的问题,但找不到任何问题。你知道问题出在哪里吗?使用 ergm 计算模型时,我没有任何问题。
对于这些模型,代码有效:
model1 <- ergm(
network ~ edges + mutual + gwidegree(decay=1, fixed=TRUE) +
gwodegree(decay=1, fixed=TRUE),
estimate = "MPLE"
)
model2 <- ergm(
network ~ edges + mutual + gwidegree(decay=1, fixed=TRUE) +
gwodegree(decay=1, fixed=TRUE) + gwesp(decay=1, fixed=TRUE),
estimate = "MPLE"
)
model3 <- ergm.AME(model1, "edges")
model4 <- ergm.AME(model2, "edges")
但是,当使用更复杂的模型时,会出现错误消息:
model5 <- ergm(
network ~ edges + mutual + gwidegree(decay=1, fixed=TRUE) +
gwodegree(decay=1, fixed=TRUE) + gwesp(decay=1, fixed=TRUE) +
edgecov(network1) + edgecov(network2) + edgecov(network3) +
edgecov(network4) + nodeifactor("chronic") +
nodeofactor("chronic") +nodeifactor("nas") +
nodeofactor("nas") + nodeofactor("sup") +
nodematch("chronic") + nodematch("nas") +
nodematch("gender") + nodefactor("gender"),
estimate = "MPLE"
)
答:
0赞
Michał
10/9/2023
#1
你能用输出来扩展问题吗?这可能有几个原因,但我怀疑你的模型有一些系数估计值为 或 。这阻碍了计算 AME 所必需的二元并列概率的计算。一般来说,数据中可能没有足够的“可变性”来估计如此复杂的模型。summary(model5)
Inf
-Inf
因此,您的解决方案将是:
- 调查 Inf 或 -Inf 处是否存在系数估计值。
- 通过以下方式重新指定模型
- 通过删除有问题的术语来简化它,或者
- 我怀疑节点属性值的某些组合可能是空的。如果是这样,请查看这些属性的分布情况,并可能考虑加入一些类别。
评论
0赞
Amelie
10/10/2023
谢谢你的评论!事实上,我有一个系数估计值为 -Inf。由于我是跨多个网络建模的,因此我不能排除网络项(Inf 仅在此特定网络中!由于 ergm 仍在为我提供估计值,因此我希望在计算 AME 时也能得到同样的估计值。或者这是不可能的?
0赞
Michał
10/11/2023
@Amelie 您是将相同的规格分别适用于多个网络,还是一次性将池化模型适用于所有网络?从问题中的代码来看,我认为是前者而不是后者,对吗?对于在 Inf 或 -Inf 处具有任何系数的模型,将不可能使用 ergMargins 计算 AME。
0赞
Amelie
10/18/2023
我确实将相同的规格分别适合多个网络。好的,谢谢你的回答,这很有帮助!
评论