为R中表的每一行生成新的回归方程

为R中表的每一行生成新的回归方程,r,regression,linear-regression,R,Regression,Linear Regression,我是R的新手,在下面的链接中找到了这篇文章,这与我试图实现的目标类似 我想做的是同样的事情,但是为两个不同的表的每一行创建一个新的回归方程 下面是一些示例数据 Closesday1 <- c(2,6,10) Closedays2 <- c(3,7,15) Closedays3 <- c(5,8,20) dataY<-data.frame(Closesday1,Closedays2,Closedays3) Dep<-t(dataY) Valuesday1 &l

我是R的新手,在下面的链接中找到了这篇文章,这与我试图实现的目标类似

我想做的是同样的事情,但是为两个不同的表的每一行创建一个新的回归方程

下面是一些示例数据

Closesday1 <- c(2,6,10)
Closedays2 <- c(3,7,15)
Closedays3 <- c(5,8,20)

dataY<-data.frame(Closesday1,Closedays2,Closedays3)
Dep<-t(dataY)


Valuesday1 <- c(4,6,8)
Valuesday2 <- c(5,8,11)
Valuesday3 <- c(7,9,14)
dataX<-data.frame(Valuesday1,Valuesday2,Valuesday3)
Ind<-t(dataX)
对于Ind,我们得到:

       [,1] [,2] [,3]
Valuesday1    4    6    8
Valuesday2    5    8   11
Valuesday3    7    9   14
我想做的是为变量1,2和3创建一个回归方程(从线性开始),取接近的第1天值,并对变量1,2和3的第1天值进行回归(因此2,6,10对4,6,8)。将计算closesday2与值Sday2的新回归方程,以及closesday3与值Sday3的新回归方程等。。。然后,我希望将输出包含在一个新表中,并为每个表添加截距和斜率列

希望这是有意义的


提前感谢您的帮助

您可以将这些步骤合并为一个步骤以提高效率:

df <- data.frame(t(sapply(seq(nrow(Dep)), function(x) coeffs <- lm(Dep[x, ] ~ Ind[x, ])$coefficients)))

df这太棒了!非常感谢您的回复!非常感谢..您可以将第二个sapply合并到第一个中以提高效率。我用这种方式把它分开,以显示每一步的进展。编辑的答案也显示了这个情况。比你好多了。您知道如何输出拟合值吗?请使用
$fitted.values
在该行中重新计算
$coverties
。如果您想在一个表中同时使用这两个参数,则需要将
lm
的输出保存到一个变量中—比如说
fit
—并返回
c(fit$coeffits,fit$fitted.values)
。谢谢!我似乎遇到的另一个问题是,对于一定数量的行,是否有1列具有NA值,但最终接受一个值。假设我们有以下值:Valuesday1
df <- data.frame(t(sapply(seq(nrow(Dep)), function(x) coeffs <- lm(Dep[x, ] ~ Ind[x, ])$coefficients)))
df <- do.call(rbind, lapply(seq(nrow(Dep)), function(x) {fit <- lm(Dep[x, ] ~ Ind[x, ]); c(fit$coefficients, fit$fitted.values, `3` = rep(NA, (ncol(Dep) - length(fit$fitted.values))))}))

df
     (Intercept) Ind[x, ]        1        2        3
[1,]   -6.000000 2.000000 2.000000 6.000000       NA
[2,]   -3.666667 1.333333 3.000000 7.000000       NA
[3,]  -10.923077 2.192308 4.423077 8.807692 19.76923