gpt4 book ai didi

R将矩阵中的所有列与循环中的每个列进行比较

转载 作者:行者123 更新时间:2023-12-04 10:44:06 25 4
gpt4 key购买 nike

我有一个变量矩阵,我正在尝试运行一个循环来比较回归中所有变量之间的差异,从而生成一个矩阵并用差异填充。下面是一些模拟代码来解决这个问题。我想生成一个比较 x_1、x_2 和 x_3 的矩阵,生成一个关于对角线对称的 3x3 矩阵,对角线应该全部为零。

y <- sample(seq(1:4), 100, replace = TRUE)
x_1 <- sample(seq(1:2), 100, replace = TRUE)
x_2 <- sample(seq(1:4), 100, replace = TRUE)
x_3 <- sample(seq(1:4), 100, replace = TRUE)

frame <- cbind(x_1, x_2, x_3)
dif <- matrix(NA, ncol = 3, nrow = 3)

for(i in 1:3){
model_1 <- lm(y ~ frame[,i])
model_2 <- lm(y ~ frame[,i])
dif[i]<- (model_2$coef[2] - model_1$coef[2])
}

我对如何索引循环并引用 x 的矩阵以生成包含结果的 3x3 表感到困惑 - 任何帮助将不胜感激。

最佳答案

 vcoef <- numeric(3)
for(i in 1:3) {
vcoef[i] <- coef( lm(y~frame[,i]))[2]
}

outer(vcoef, vcoef, "-")
#----------
[,1] [,2] [,3]
[1,] 0.0000000 -0.15208933 -0.17302592
[2,] 0.1520893 0.00000000 -0.02093659
[3,] 0.1730259 0.02093659 0.00000000

如果您不想要冗余信息,您可以使用 combn 获得所有成对差异:

> combcos  <- combn(vcoef,2)
> combcos[1, ] -combcos[2, ]
[1] -0.15208933 -0.17302592 -0.02093659

关于R将矩阵中的所有列与循环中的每个列进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17414670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com