如何将“ for”循环中的回归结果存储在唯一名称下的列表中?

亚历克斯·贝多(AlexBădoi)

我对股票数据运行了多个滚动窗口分位数回归,因此结果输出是一个xts文件,其系数在每个时间点估算。然后,根据分位数对最终估计量进行近似。然后使用for参数对我所有股票进行5次回归。

我想做什么?我需要循环并存储xts输出,该输出看起来像下面显示的列表中的唯一名称,以便稍后在我的方法的下一步中使用。

           (Intercept)      rmrf        smb         hml        rmw        cma
2015-05-21 -0.001070362 0.9647046 -0.1206183 -0.05204882 0.01866969 -0.0361021
2015-05-22 -0.001070362 0.9647046 -0.1206183 -0.05204882 0.01866969 -0.0361021
2015-05-26 -0.001070362 0.9647046 -0.1206183 -0.05204882 0.01866969 -0.0361021
2015-05-27 -0.001070362 0.9647046 -0.1206183 -0.05204882 0.01866969 -0.0361021
2015-05-28 -0.001070362 0.9647046 -0.1206183 -0.05204882 0.01866969 -0.0361021
2015-05-29 -0.001070362 0.9647046 -0.1206183 -0.05204882 0.01866969 -0.0361021

当我想将结果存储到列表中时,最后出现了问题。发生这种情况是因为我希望数据集的名称与执行回归的列的名称相同。

该代码已简化为仅一种回归。解决此问题的最佳尝试如下:

testlist <- list()

    for(i in 1:ncol(stocks) {

stock_data <- stocks[,i]


 # merge data together 
    regression_input <- merge(stock_data, rmrf, smb, hml, rmw, cma, rf)
    #rename 
    colnames(regression_input) = c("stock_returns" , "rmrf" , "smb" , "hml" , "rmw" , "cma" , "rf")

        quantile005 <- as.xts(                 
            rollapply(zoo(regression_input),
                      width=200,
                      FUN = function(Z) 
                      { 
                        t = rq(stock_returns ~ rmrf + smb + hml + rmw + cma, tau=0.05, data = as.data.frame(Z),
                               method="br", model = TRUE); 
                        return(t$coef) 
                      },
                      by.column=FALSE, align="right")
              )

    final_estimators <- # additional calculations are performed with results stored here 

#save
name <-  paste(rownames(i), sep = "")
testlist[[name]] <- final_estimators
}

此外:即使在外部循环时,该命令似乎也不会读取我的行的名称。

> name <-  paste(rownames(return_data[,1]), sep = "")
> name
character(0)
> 

编辑W解决方案

看来解决方案已经在我身边了。问题是colnames函数仅从数据框对象检索名称。这是代码的最终版本。

# Create list to store dataframes


testlist <- list()


# Loop over entire regression methodology 


for(i in 1:ncol(test_3_stocks)) {

  # Get regression input together
  stock_data <- test_3_stocks[,i] - ff_data[,7]/100
  regression_input <- merge(stock_data, rmrf, smb, hml, rmw, cma, rf)
  colnames(regression_input) = c("stock_returns" , "rmrf" , "smb" , "hml" , "rmw" , "cma" , "rf")

  #Rolling window regression -  Quantile coefficients data

  quantile005 <- as.xts( 

    rollapply(zoo(regression_input),
              width=200,
              FUN = function(Z) 
              { 
                t = rq(stock_returns ~ rmrf + smb + hml + rmw + cma, tau=0.05, data = as.data.frame(Z),
                       method="br", model = TRUE); 
                return(t$coef) 
              },
              by.column=FALSE, align="right")
  )
  print(tail(summary(quantile005)))

  tmp <- summary(quantile005)

  name <- colnames(as.data.frame(test_3_stocks[,i]))
  testlist[[name]] <- tmp

}

最终结果:

> tail(testlist$TEST1)
           (Intercept)       rmrf      smb      hml      rmw       cma
2015-05-21    1255.853   -7.16453 531.4655 1870.740 1422.398 -4034.082
2015-05-22    1256.221  -40.88781 512.3803 1700.796 1569.501 -3830.814
2015-05-26    1256.413 -152.42752 713.5793 1754.086 1452.681 -3771.936
2015-05-27    1256.707   15.39627 451.2127 1568.405 1246.730 -3665.781
2015-05-28    1257.893 -133.72554 705.0280 1816.560 1232.326 -4188.772
2015-05-29    1258.239 -148.11936 624.4424 1837.348 1098.122 -4301.114
阿里亚诺

很近!您已经正确隔离了错误地设置名称的代码部分:

name <- paste(rownames(return_data[,1]), sep = "")

假设return_data看起来像您在文章顶部列出的data.frame,其中的行名是日期,如中所示2015-05-21,则可以轻松进行调整:

name <- row.names(return_data)[i]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从for循环中返回多个具有唯一名称的熊猫数据帧?

如何从列表创建唯一名称列表

如何使用 R 中的循环将数据框保存为唯一名称?

如何从 dict 列表中获取前 3 个唯一名称并在 python 中对其进行计数

如何在 Pandas 列中对唯一名称使用 groupby 和 cumcount

如何在不同位置的表单中为ngModelGroup设置唯一名称

如何计算每个组中唯一名称的数量

如何在python中声明具有唯一名称的变量?

如何从数据框列中获取唯一名称

如何使用 1 个命令从包含此名称的每一行中获取唯一名称列表和数字总和?

如何重复使用具有唯一名称和标记的相同预制件并添加到C#列表中

如何将结果存储在for循环的列表中

如何将循环迭代结果存储到列表中?

如何将进程从一个名称空间移到另一名称空间?

如何解析树中的普通子代并在Python中为其赋予唯一名称?

如何为最终Verilog文件中的模块序列中的每个元素赋予唯一名称

如何在Python的CSV文件中的组中打印出现的唯一名称

每个属性都有唯一名称时,如何在PowerShell中解析XML?

如何在Rails的表中获取每个唯一名称的第n条记录?

如何沿维度复制数据,同时避免 Oracle 中的唯一名称约束问题

如何检查每个子目录在目录中是否具有唯一名称

如何以原始名称而不是唯一名称下载文件?

如何使用Itext将图像文件添加到现有PDF中,并为其声明唯一名称?

如何创建具有唯一名称的文件?

如何为每个JSON值生成唯一名称

Bootstrap表单:如何动态创建单选按钮的唯一名称

使用宏,如何获得结构字段的唯一名称?

如何在Visual Studio Webtest中上传具有唯一名称的文件

如何设置并获取唯一名称/标签以动态添加子android