在循环中迭代计算线性回归

时间:2014-06-22 01:55:04

标签: r

我在R工作,我有2个向量,LE和NEE(长度为5265),我想用它计算两者之间的线性回归,但是一次5个点,每个5个将回归系数值指向另一个称为WUE_5的向量。这是我计算所有点的回归系数的函数:

WUE_function <- function(NEE, LE) {
  return(lm(NEE ~ LE)$coefficients[2])
}

我无法弄清楚如何编写一个基本上由

组成的循环
WUE_5 <- c(lm(NEE[1:5] ~ LE[1:5])$coefficients[2],
           lm(NEE[2:6] ~ LE[2:6])$coefficients[2],
           ..., etc)

我用一些任意向量x和y尝试了这个,但这是结果:

x <- c(1:10)
y <- c(2, 5, 3, 6, 7, 8, 13, 6, 3, 8)
n <- 7
i <- 1
z <- NULL


while(i < n){
  z[i] <- lm(x[i:i+4] ~ y[i:i+4])$coefficients[2]
  i <- i+1 
} 

z
# [1] NA NA NA NA NA NA 

我不明白我做错了什么让z充满了NA&#39; s 提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

序列运算符:的优先级高于加法运算符+。这意味着i:i+4会转换为i+4(这是一个元素)。

如果你做了

z[i]<- lm(x[i:(i+4)]~y[i:(i+4)])$coefficients[2]

相反,我相信你会得到你追求的结果