如何计算ERGM预测概率的标准误差?
How to calculate the standard errors of ERGM predicted probabilities?
我无法根据 ERGM 模型的预测概率估计标准误差来计算置信区间。获得预测概率不是问题,但我想了解预测的不确定性。
下面是一个基于文艺复兴时期佛罗伦萨家庭婚姻和商业关系数据集的可重现示例。
library(statnet)
data(flo)
flomarriage <- network(flo,directed=FALSE)
flomarriage
flomarriage %v% "wealth" <- c(10,36,27,146,55,44,20,8,42,103,48,49,10,48,32,3)
flomarriage
gest <- ergm(flomarriage ~ edges +
absdiff("wealth"))
summary(gest)
plogis(coef(gest)[['edges']] + coef(gest)[['absdiff.wealth']]*10)
根据该模型,估计贫富差距为 10 对应于平手的概率为 0.182511。我的第一个问题是,这是正确的解释吗?我的第二个问题是,如何计算这个概率的标准误差?
这是对像这个这样的二元独立模型的正确解释。对于二元依赖模型,这将是给定网络其余部分的条件概率。
您可以通过将最后一行重写为权重向量和系数向量的点积来获得 logit 尺度上预测的标准误差:
eta <- sum(c(1,10)*coef(gest))
plogis(eta)
那么,由于vcov(gest)
是参数估计的协方差矩阵,利用方差公式(如http://www.stat.cmu.edu/~larry/=stat401/lecture-13.pdf),
(var.eta <- c(1,10)%*%vcov(gest)%*%c(1,10))
然后您可以使用 Delta 方法(例如 https://blog.methodsconsultants.com/posts/delta-method-standard-errors/)获得预测概率的方差(和标准误差)。但是,除非您需要这样的标准误差,而不是置信区间,否则我的建议是首先计算 eta 的区间(即 eta + qnorm(c(0.025,0.0975))*sqrt(var.eta)
),然后在端点上调用 plogis()
。
我无法根据 ERGM 模型的预测概率估计标准误差来计算置信区间。获得预测概率不是问题,但我想了解预测的不确定性。
下面是一个基于文艺复兴时期佛罗伦萨家庭婚姻和商业关系数据集的可重现示例。
library(statnet)
data(flo)
flomarriage <- network(flo,directed=FALSE)
flomarriage
flomarriage %v% "wealth" <- c(10,36,27,146,55,44,20,8,42,103,48,49,10,48,32,3)
flomarriage
gest <- ergm(flomarriage ~ edges +
absdiff("wealth"))
summary(gest)
plogis(coef(gest)[['edges']] + coef(gest)[['absdiff.wealth']]*10)
根据该模型,估计贫富差距为 10 对应于平手的概率为 0.182511。我的第一个问题是,这是正确的解释吗?我的第二个问题是,如何计算这个概率的标准误差?
这是对像这个这样的二元独立模型的正确解释。对于二元依赖模型,这将是给定网络其余部分的条件概率。
您可以通过将最后一行重写为权重向量和系数向量的点积来获得 logit 尺度上预测的标准误差:
eta <- sum(c(1,10)*coef(gest))
plogis(eta)
那么,由于vcov(gest)
是参数估计的协方差矩阵,利用方差公式(如http://www.stat.cmu.edu/~larry/=stat401/lecture-13.pdf),
(var.eta <- c(1,10)%*%vcov(gest)%*%c(1,10))
然后您可以使用 Delta 方法(例如 https://blog.methodsconsultants.com/posts/delta-method-standard-errors/)获得预测概率的方差(和标准误差)。但是,除非您需要这样的标准误差,而不是置信区间,否则我的建议是首先计算 eta 的区间(即 eta + qnorm(c(0.025,0.0975))*sqrt(var.eta)
),然后在端点上调用 plogis()
。