R:循环变量赋值,每次增加变量计算

R: looped variable assignment, augmenting variable calculation each time

我正在尝试根据数据集中的一系列变量计算回归变量。我希望在 运行 回归的每次迭代中使用不同的变量集来计算回归变量(ei:阈值 1)。

旨在收集每个阈值范围的SSR值,从而根据数据确定理想的阈值。

数据 (df) 变量:收益率、Prec、价格、0C、1C、2C、3C、4C、5C、6C、7C、8C、9C、10C

每个循环通过每次选择不同的 "b" 来计算 "thresholds"。

a <- df[=10=]C
b <- dfC

Threshold1 <- (a-b)

Threshold2 <- (b)

其中 "b" 会在每个循环中发生变化,范围从 1C 到 9C。

每个单独的阈值集(1 和 2)应用于 运行 回归,并保存 SSR 以便与基于新 "b" 值(范围从 1C 到 9C)

回归:

reg <- lm(log(Yield)~Threshold1+Threshold2+log(Price)+prec+I(prec^2),data=df)

对于回归的每个循环,我按以下方式改变计算阈值的组件:

当前方法以以下代码为中心:

 df <- read.csv("Data.csv",header=TRUE)

 names(df)
 0C-9Cvarlist <- names(df)[9:19]
 ssr.vec <- matrix(,21,1)

 for(i in 1:length(varlist)){

 a <- df[=12=]C
 b <- df$[i]

 Threshold1 <- (a-b)

 Threshold2 <- (b)

 reg <- lm(log(Yield)~Threshold1+Threshold2+log(Price)+prec+I(prec^2),data=df)

 r2 <- summary(reg)$r.squared

 ssr.vec[i,] <- c(varlist,r2)
 }

 colnames(ssr.vec) <- c("varlist","r2")

我用上述方法未能达到预期的结果。

谢谢。

我能发现不少错误...

您需要向回归中的数据添加感兴趣的变量 (Threshold1 和 Threshold2)。另外,我认为您需要 select varlist[i] 而不是 varlist 来创建您的 ssr.vec。您的 ssr.vec 需要 2 列,这是一个矩阵,因此您应该将其称为矩阵。您也不能使用 df$[i] 之类的东西来提取列!为什么矩阵的长度是 21?!将列名称更改为 C0,..,C9 而不是 0C,..,9C.

为了将来参考,请在提问之前解决简单的错误...并在您的 post 中包含错误消息!

这应该可以完成工作:

df <- read.csv("Data.csv",header=TRUE)

names(df)[8:19] = paste0("C",0:10)
varlist <- names(df)[9:19]
ssr.vec <- matrix(,21,2)

for(i in 1:length(varlist)){

    a <- df$C0
    b <- df[,i+9]

    df$Threshold1 <- (a-b)

    df$Threshold2 <- (b)

    reg <- lm(log(Yield)~Threshold1+Threshold2+log(Price)+prec+I(prec^2),data=df)

    r2 <- summary(reg)$r.squared

    ssr.vec[i,] <- c(varlist[i],r2)
}

colnames(ssr.vec) <- c("varlist","r2")