首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多线性回归

多线性回归
EN

Stack Overflow用户
提问于 2014-06-30 07:12:50
回答 1查看 173关注 0票数 0

作为我的数据分析(时间序列)的一部分,我正在检查日志收益与实际波动之间的相关性。

我的数据包括跨越几年的时间序列,涉及大约100家不同的公司(大型动物园对象,~2MB文件大小)。为了检查上述相关性,我使用了以下代码来计算几个滚动方差(即k.a)。已实现的波动):

代码语言:javascript
复制
rollvar5 <- sapply(returns, rollVar, n=5, na.rm=TRUE)
rollvar10 <- sapply(returns, rollVar, n=10, na.rm=TRUE)

使用简单的fTrading函数rollVar。然后,我将滚动变量转换为动物园对象,并添加日期索引(通过将结果导出到csv文件并手动添加日期,然后使用read.zoo --虽然不太复杂,但工作得很好)。

现在,我希望创建大约100个线性回归模型,每个模型将一家公司的日志收益与实际波动率联系起来,将其与指定的公司联系起来。就个人而言,这将如下所示:

代码语言:javascript
复制
lm_rollvar5 <- lm(returns$[5:1000,1] ~ rollvar5[5:1000,1])
lm_rollvar10 <- lm(returns$[10:1000,1] ~ rollvar10[10:1000,1])

这是没有问题的。

现在,我希望将其扩展到为所有100家公司自动创建线性回归模型。我尝试的是一个简单的循环:

代码语言:javascript
复制
NC <- ncol(returns)
for(i in 1:NC){
lm_rollvar5 <- lm(returns[5:1000],i] ~ rollvar5[5:1000,i])
summary(lm_rollvar5)
lm_rollvar10 <- lm(returns[10:1000],i] ~ rollvar10[10:1000,i])
summary(lm_rollvar10)
}

有什么方法可以优化我的方法吗?(即如何简单地保存所有回归结果)。从现在开始,for循环只输出数百个回归结果,这在分析结果时是非常无效的。

我也尝试使用apply函数,但我不确定如何在本例中使用它,因为有几个timeseries对象(返回和滚动变量保存在不同的对象中,如您所见)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-30 08:46:18

至于您如何以简单的方式保存所有回归结果的问题,考虑到我们不知道您需要做什么,以及您认为什么“简单”,这是有点难回答的。但是,您可以在循环之外定义一个列表,并将每个回归模型存储在这个列表中,这样您就可以访问模型,而无需以后重新修改它们。试一试。

代码语言:javascript
复制
 NC <- ncol(returns)
 lm_rollvar5 <- vector(mode="list", length=NC)
 lm_rollvar10 <- vector(mode="list", length=NC)
 for(i in 1:NC){
 lm_rollvar5[[i]] <- lm(returns[5:1000],i] ~ rollvar5[5:1000,i])
 lm_rollvar10[[i]] <- lm(returns[10:1000],i] ~ rollvar10[10:1000,i])
 }

这就给出了公司ii-th列表中的合适模型。同样,您也可以保存摘要的输出。或者你做了像

代码语言:javascript
复制
 my.summaries_5 <- lapply(lm_rollvar5, summary)

这给了你一份总结的清单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24484699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档