R语言 如何评估使用模型搜索算法的饱和网络模型的稳定性?

cigdeys3  于 2023-05-11  发布在  其他
关注(0)|答案(1)|浏览(198)

背景及问题

bootnet包中有多个函数用于评估心理网络模型参数的稳定性和准确性,例如边缘权重置信区间的bootstrap,中心性度量的case-drop bootstrap和边缘权重的bootstrap差异测试。这些方法从estimateNetwork()函数中获取网络对象。但是,在某些情况下,您使用psychonetrics包来估计模型,该包生成的对象似乎无法输入bootnet包函数。这包括使用模型搜索算法(修剪、步进)估计饱和网络模型的情况。
你如何评估这类网络模型的稳定性?或者,评估同样的稳定性措施在概念上没有意义?

具体案例

我正在估计一个网络模型的基础上的横截面数据是编码的二进制。我的样本量相对较大,约为3000,因此我遵循Isvoranu & Epskamp(2021)的建议,使用非正则化估计量。我还想优先考虑特异性,所以我应用修剪。我的型号:

model <- Ising(binaryDF) %>% 
  runmodel() %>% 
  prune(alpha = 0.01, adjust = "bonferroni") %>% 
  stepup(alpha = 0.01, criterion = "bic")

在评估了模型的拟合度之后,我现在想评估稳定性和准确性,但我不能使用bootnet包。教科书“Network Psychometrics with R”提到饱和模型中边缘的置信区间可以用心理测量学中的CIplot函数绘制。但是,这些配置项仅在未使用模型搜索算法(例如本例中的修剪和步进)时有效。
您还可以使用psychonetrics::parameters(model)检查psychonetrics模型的参数,在这里您将找到每个边权重系数的p值和SE。我想你可以计算每个系数的CI,但这有效吗?

xxhby3vn

xxhby3vn1#

置信区间实际上仅对饱和模型有效,而对在同一数据集中使用模型选择的模型无效。你可以做的一件事是自己做引导,对不同的引导样本(binaryDF[sample(1:nrow(binaryDF),nrow(binaryDF),FALSE),])随机重复上面的代码。但是在这种情况下也可以使用bootnet

library("bootnet")

# Custom estimation function:
fun <- function(data){
  library("psychonetrics")
  library("dplyr")

  Ising(data) %>% 
  runmodel() %>% 
  prune(alpha = 0.01, adjust = "bonferroni") %>% 
  stepup(alpha = 0.01, criterion = "bic") %>%
  getmatrix("omega")
}

# Run estimate network:
net <- estimateNetwork(binaryDF, fun = fun)

# Run bootstrap:
boots <- bootnet(net, nCores = 16, nBoots = 1000)

plot(boots, split0=TRUE, plot = "interval")

相关问题