将来自 netlm 的拟合值和残差值填充到矩阵数据中的各个单元格中

问题描述

我使用 netlm() 包中的 sna一个变量回归到另一个变量,以获得拟合值和残差值。我将 mode 内的 netlm() 参数设置为无向 "graph",QAP 为 10 倍。然后我检查了输出

输出包含 12,880 个拟合值和残差值,假设我的数据维度为 161 * 161,这意味着它们表示下(或上)对角矩阵数据减去主对角线值的拟合/残差值( (161*161)/2 - 161 = 12880)。如果我想生成一个与我的数据维度相同的新矩阵,并用拟合值填充上下对角线,我如何确保这些值实际上会填充到相应的单元格中?

如果有人能对此有所了解,我们将不胜感激。我在下面提供了我的代码供您参考。

library(sna)


x <- readRDS(url("https://www.dropBox.com/s/v1kz95luew28o7u/xki_ratio2019.rds?dl=1"))
y <- readRDS(url("https://www.dropBox.com/s/yc7md37x6albxog/xki_lag.rds?dl=1"))

model.nl <- netlm(y[[1]],list(x),diag = FALSE,mode = "graph",nullhyp=c("qapx"),reps = 100)

dim(x)
161 161

length(model.nl$residuals)
12880

解决方法

类似的东西

resid <- matrix(NA,161,161)
resid[upper.tri(resid)] <- model.nl$residuals

不确定你是想从我的头顶上去掉 upper.tri 还是 lower.tri,你可能需要转置