如何逐行运行回归

时间:2017-09-17 19:37:10

标签: r loops row regression

我刚开始使用R进行统计,我感谢任何帮助。

作为第一步,我在列上运行了时间序列回归。 Y值是相关的,X是解释性的。

# example
Y1 <- runif(100, 5.0, 17.5)
Y2 <- runif(100, 4.0, 27.5)
Y3 <- runif(100, 3.0, 14.5)
Y4 <- runif(100, 2.0, 12.5)
Y5 <- runif(100, 5.0, 17.5)
X <- runif(100, 5.0, 7.5)
df1 <- data.frame(X, Y1, Y2, Y3, Y4, Y5)

# calculating log returns to provide data for the first regression
n <- nrow(df1)
X_logret <- log(X[2:n])-log(X[1:(n-1)])
Y1_logret <- log(Y1[2:n])-log(Y1[1:(n-1)])
Y2_logret <- log(Y2[2:n])-log(Y2[1:(n-1)])
Y3_logret <- log(Y3[2:n])-log(Y3[1:(n-1)])
Y4_logret <- log(Y4[2:n])-log(Y4[1:(n-1)])
Y5_logret <- log(Y5[2:n])-log(Y5[1:(n-1)])

# bringing the calculated log returns together in one data frame
df2 <- data.frame(X_logret, Y1_logret, Y2_logret, Y3_logret, Y4_logret, Y5_logret)

# running the time series regression
Regression <- lm(as.matrix(df2[c('Y1_logret', 'Y2_logret', 'Y3_logret', 'Y4_logret', 'Y5_logret')]) ~ df2$X)

# extracting the coefficients for further calculation
Regression$coefficients[2,(1:5)]

作为第二步,我想逐行运行逐行回归,因为数据包含每日观察值。我还有一个列“DATE”但我不知道如何在示例中将它带入此处。 DATE列的格式是POSIXct,也许有人知道如何引用其中应该进行回归的特定时期。 在逐行回归中,我想使用5个计算系数(来自第一次回归)作为解释变量。 5个Y_logret值,我想用作因变量。

Y_logret(1到5)= Beta *回归$系数[2,(1:5)] +误差值。不需要截取,所以我会通过在lm函数中添加+0将其设置为零。

我的目标是在一段时间内运行此回归,例如超过20天。日复一日,这将提供总共20个Beta估计值(每天一次回归),但我还需要所有错误进行进一步计算。因此,我每天必须提取5个错误,即总共20 * 5个错误值。

这只是一个例子,在原始数据集中,我有20个Y值和超过4000行。我想在900-1000天的某些时间间隔内进行回归。由于我是R的新手,我不知道如何继续。特别是如何在几行中编写代码。

我真的很感激任何帮助。

0 个答案:

没有答案