gpt4 book ai didi

r - 将 lm() 应用于 R 中 1 个变量的矩阵

转载 作者:行者123 更新时间:2023-12-01 23:59:29 24 4
gpt4 key购买 nike

我正在尝试使用 apply() 系列函数对向量上的矩阵的每一列进行回归,从而为每一列生成一组系数,但我无法理解它。例如,我可以使用如下循环执行此操作:

x <-  matrix(runif(10*10), 10,10)
y <- runif(10)

coefs <- matrix(NA, ncol = 2, nrow = 10)

for(i in 1:10){
coefs[i,] <- lm(y~x[,i])$coef
}

帮助将上面的循环转换为应用函数将不胜感激。谢谢。

最佳答案

应该这样做:

t(apply(x, 2, function(x.col) lm(y~x.col)$coef))

我们按列(这就是 2 的意思)应用于您的矩阵 x,并且我们定义了一个简单的函数来获取结果。 apply 会将结果自动堆叠到一个 2 行矩阵中,我们使用 t 将其转换为所需的格式:

      (Intercept)        x.col
[1,] 0.6314854 -0.567179167
[2,] 0.3679481 0.020019158
[3,] 0.2448379 0.280314036
[4,] 0.4195727 -0.082207564
[5,] 0.1249273 0.425974675
[6,] 0.4567553 -0.194174789
[7,] 0.2653036 0.181709766
[8,] 0.2963443 0.217408463
[9,] 0.2902572 0.174962624
[10,] 0.3730373 0.007380176

请注意,您的循环没有任何问题。由于您初始化了 coefs,它应该和 apply 一样快。如果你追求速度,你应该考虑一个比 lm 更快的计算斜率和截距的选项,因为它会做很多其他事情并减慢它的速度。

关于r - 将 lm() 应用于 R 中 1 个变量的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22211629/

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