将 netlm 中的拟合值和残差值填充到矩阵数据中的相应单元格中

Fill in fitted and residual values from netlm into respective cells in matrix data

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

输出包含 12,880 个拟合值和残差值,鉴于我的数据维度为 161 * 161,这意味着它们代表下(或上)对角矩阵数据减去的 fitted/residual 值主对角线值 ((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,你可能需要转置