4 年每日数据的滚动回归,每个新回归和不同因变量提前一个月

2024-02-20

我有 5 个自变量(附加数据中的 B-F 列)和一些因变量(附加数据中的 G-M 列),我需要针对所有自变量对每个因变量进行多重回归。回归必须有 4 年的数据窗口,并且每个新的估计都必须提前一个月。我需要提取系数并对每个系数进行 vasicek 调整(截距除外)。这个调整只是:

贝塔系数的调整 https://i.stack.imgur.com/PSzSu.png

数据看起来像

整个数据是:

Data.xls https://docs.google.com/spreadsheets/d/1XRm0VrQRmWs2s4GMwdSO2r6KyFZFyFmV/edit#gid=1028692018

其中自变量放置在 B-F 列中,因变量放置在 G-M 列中。我一直在努力解决这个问题,并且构建了两部分代码。首先,我提取每个因变量的回归系数,并根据 vasicek 调整来调整它们,但没有采用我需要的移动窗口:

depvar <- c("LYB_UN_Equity" ,"AXP_UN_Equity", "VZ_UN_Equity", "AVGO_UW_Equity", "BA_UN_Equity", "CAT_UN_Equity", "JPM_UN_Equity")
regresults <- lapply(depvar, function(dv) {
tmplm <- lm(get(dv) ~ Mkt + SMB + HML + RMW + CMA, data=newdata
#     ,subset=(Newdata$Fecha > "1996-01-01" & Newdata$Fecha < "1999-12-31"), na.action = na.exclude )
 k=length(tmplm$cofficients)-1
 SSE=sum(tmplm$residuals**2)
 n=length(tmplm$residuals)
 SE=sqrt(SSE/(n-(1-k))
coef(tmplm)*(summary(tmplm)$coef[,2]/SE+summary(tmplm)$coef[,2]) +coef(tmplm)*(SE/SE+summary(tmplm)$coef[,2])
})


allresults <- data.frame(depvar = depvar, 
                     do.call(rbind, regresults))
names(allresults)[2] <- "intercept"
allresults}

它有效,但正如我所说,我需要 4 年每日数据的滚动窗口,每个新估计都会提前一个月,所以我尝试使用嵌套 for 循环,但它不起作用:

for (j in 1:7) {
for (i in 1:length(newdata)) {
 #try(
  Model<-lm(newdata[seq(i,1056,24),j+6] ~ newdata[seq(i,1056,24), 2:6])
  #, silent=T)
betas <- as.matrix(coefficients(Model))
}}

错误是:

Error in model.frame.default(formula = newdata[seq(i, 1056, 24), j + 6] ~  :  invalid type (list) for variable 'newdata[seq(i, 1056, 24), j + 6]'

我是初学者,非常感谢您的帮助


问题中没有足够的数据来运行 4 年,并且因变量的值丢失,因此这里是一个使用w3 个月(而不是 4 年)和一组简化的统计数据,可以通过更改输入和数据进行调整reg.

请注意,yearmon 类将仅由年和月组成的日期存储为年 + 分数,其中分数 = 0, 1/12, ..., 11/12 表示 Jan、Feb、...、Dec,因此 w 的间隔长度月份为 w/12。

library(zoo)

# inputs
set.seed(123)
ndata <- data.frame(date = as.Date("2000-01-01") + 0:365, 
  z = rnorm(366))
A <- sqrt(0:365)
B <- (0:365)^0.25
w <- 3 # number of trailing months to regress over
depvars <- c("A", "B")
indep <- c("date", "z")

reg <- function(ym_, depvar, indep, data, w, ym) {
  ok <- ym > ym_ - w/12 & ym <= ym_
  fo <- reformulate(indep, depvar)
  fm <- lm(fo, data, subset = ok)
  co <- coef(fm)
  n <- nobs(fm)
  c(co, n = n)
}

ym <- as.yearmon(ndata$date)
ym_u <- tail(unique(ym), -(w-1))

L <- Map(function(depvar) {
  data.frame(yearmon = ym_u, 
    t(sapply(ym_u, reg, 
      depvar = depvar, indep = indep, data = ndata, w = w, ym = ym)), 
    check.names = FALSE)
}, depvars)

L

给出以下数据框列表,其中yearmon是执行回归的w个月期间最后一个月的年份和月份,n是该期间的天数。

$A
    yearmon (Intercept)       date             z  n
1  Mar 2000   -931.0836 0.08520186 -3.783475e-02 91
2  Apr 2000   -645.7504 0.05930666  5.638294e-03 90
3  May 2000   -536.6141 0.04942836  3.528984e-03 92
4  Jun 2000   -468.3192 0.04326379 -6.769498e-03 91
5  Jul 2000   -420.6956 0.03897671 -7.307754e-05 92
6  Aug 2000   -384.5289 0.03573000  1.343427e-03 92
7  Sep 2000   -356.8805 0.03325475 -1.272157e-03 92
8  Oct 2000   -333.4633 0.03116400  1.980825e-03 92
9  Nov 2000   -314.3980 0.02946651  2.223839e-04 91
10 Dec 2000   -298.0596 0.02801567 -2.949753e-04 92

$B
    yearmon (Intercept)        date             z  n
1  Mar 2000  -206.66238 0.019006840 -7.802128e-03 91
2  Apr 2000  -110.66468 0.010294703  1.301456e-03 90
3  May 2000   -83.11581 0.007801199  8.920903e-04 92
4  Jun 2000   -67.34099 0.006377318 -1.520903e-03 91
5  Jul 2000   -57.03138 0.005449255 -1.435477e-05 92
6  Aug 2000   -49.58352 0.004780660  2.702669e-04 92
7  Sep 2000   -44.11908 0.004291454 -2.438281e-04 92
8  Oct 2000   -39.65054 0.003892493  3.683646e-04 92
9  Nov 2000   -36.12215 0.003578342  4.162776e-05 91
10 Dec 2000   -33.18009 0.003317091 -5.103712e-05 92

或者如果首选数据框,则:

dplyr::bind_rows(L, .id = "depvar")

giving:

   depvar  yearmon (Intercept)        date             z  n
1       A Mar 2000  -931.08360 0.085201863 -3.783475e-02 91
2       A Apr 2000  -645.75036 0.059306657  5.638294e-03 90
3       A May 2000  -536.61413 0.049428357  3.528984e-03 92
4       A Jun 2000  -468.31918 0.043263786 -6.769498e-03 91
5       A Jul 2000  -420.69558 0.038976709 -7.307754e-05 92
6       A Aug 2000  -384.52887 0.035729997  1.343427e-03 92
7       A Sep 2000  -356.88052 0.033254748 -1.272157e-03 92
8       A Oct 2000  -333.46329 0.031163998  1.980825e-03 92
9       A Nov 2000  -314.39800 0.029466506  2.223839e-04 91
10      A Dec 2000  -298.05960 0.028015670 -2.949753e-04 92
11      B Mar 2000  -206.66238 0.019006840 -7.802128e-03 91
12      B Apr 2000  -110.66468 0.010294703  1.301456e-03 90
13      B May 2000   -83.11581 0.007801199  8.920903e-04 92
14      B Jun 2000   -67.34099 0.006377318 -1.520903e-03 91
15      B Jul 2000   -57.03138 0.005449255 -1.435477e-05 92
16      B Aug 2000   -49.58352 0.004780660  2.702669e-04 92
17      B Sep 2000   -44.11908 0.004291454 -2.438281e-04 92
18      B Oct 2000   -39.65054 0.003892493  3.683646e-04 92
19      B Nov 2000   -36.12215 0.003578342  4.162776e-05 91
20      B Dec 2000   -33.18009 0.003317091 -5.103712e-05 92

Note

我不清楚问题中统计计算的意图。我确实在第8页的顶部找到了公式这个文件 https://www.erawa.com.au/cproot/11652/2/Energy%20Networks%20Association%20-%20Draft%20Rate%20of%20Return%20Guidelines%20-%20Report%208%20-%20Vasicek%20Adjustment.pdf但它似乎与问题中提到的有所不同。无论如何,至少问题中的代码似乎需要对某些未平方的项目进行平方,并注意coef(fm), sigma(fm) and diag(vcov(fm))是系数、残差标准误差和系数标准误差的平方。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

4 年每日数据的滚动回归,每个新回归和不同因变量提前一个月 的相关文章

  • 如何纠正 data.frame 上的字符编码

    我有一个像这样的数据框 data names lt data frame DATA c 1 5 rownames data names lt c IV xc1N JOS xc9 LUC xcdA RAM xd3N TO xd1O data
  • 多个动态滤镜更新闪亮

    我希望能够让 UI 输入闪亮 并根据用户之前的选择进行自我更新 因此 在下面的示例中 预期的行为是用户选择cyl vsor carb那么这将 过滤数据集mtcars用于创建绘图 即用户根据过滤条件调整绘图并 更新其他过滤器中的剩余输入选择
  • `dplyr::_join` 函数的命名向量“by”参数[重复]

    这个问题在这里已经有答案了 我正在写一个函数dplyr join两个数据框by不同的列 第一个数据帧的列名称动态指定为函数参数 我相信我需要使用rlang准引用 元编程 但未能找到可行的解决方案 我很感激任何建议 library dplyr
  • R Shiny:如何将无功值从闪亮模块返回到主服务器功能?

    我有一个简单的玩具示例 它使用 add removeBtn 模块在 第一个 模块中添加和删除 UI 我需要跟踪单击 添加 删除 的次数 如果我不使用模块 这很容易 但我试图在嵌套模块的上下文中执行此操作 代码如下 但基本上 我似乎无法访问主
  • R,使用具有两种以上可能性的二项式分布

    我知道这可能是基本的 但我似乎有一个心理障碍 假设您想要计算在一个骰子上掷出 4 5 或 6 的概率 在 R 中 这很简单 sum 1 6 1 6 1 6 这给出了 1 2 这是正确答案 然而 我内心深处 可能应该保留的地方 认为我应该能够
  • 在 RMarkdown 输出到 PDF 时缩进而不添加项目符号点或编号

    之前有人问过如何在没有项目符号的情况下缩进文本 RMarkdown 中的点 但这是针对 HTML 输出的 在 RMarkdown 中缩进而不添加项目符号点或数字 https stackoverflow com questions 47087
  • 在包加载之前如何知道 R 中特定函数属于哪个包?

    例如 我知道许多流行的功能 例如tbl df 我通常不记得它属于哪个包 即data table or dplyr 所以我必须始终记住并加载一个包 但我做不到 tbl df除非我加载了正确的包 在 R 控制台本身加载或安装包之前 有没有办法知
  • dplyr:连接中的 NSE (by)

    我很难弄清楚如何使用 dplyr left join 和 NSE 连接两个表 问题是我无法为 by 提供正确的值 我想我现在已经找到了解决方案 但感觉我正在以一种额外复杂的方式来做 因此 如果您知道更简单 更优雅的解决方案 请告诉我 这就是
  • R:按组,测试一个变量的每个值是否存在于另一个变量中

    我有一个数据框架 结构如下 a lt c 1 1 1 2 2 2 3 3 3 3 4 4 b lt c 1 2 3 1 2 3 1 2 3 4 1 2 c lt c NA NA 2 NA 1 1 NA NA 1 1 NA NA df lt
  • 要在子集中显示的非数字条目的维恩图

    我有以下数据框 SET1 SET2 SET3 par1 par2 par1 par2 par3 par2 par3 par4 par5 我想制作一个维恩图 其中所有这些 parX 元素都显示在各自的子集中 即作为标签 而不仅仅是重叠元素的数
  • 如何在Rstudio中快速给几个单词加上引号?

    如何将 MI ID FL 转换为 MI ID FL 而无需键入每个双引号 Hmisc 包有一个函数 Cs 它将评估逗号分隔的文本是否带有引号 Cs MI ID FL becomes MI ID FL
  • StatET调试工具

    我想我只是很密集 但我似乎无法弄清楚如何在 Eclipse 中的 R 中使用调试工具 StatET 插件 有人有关于这个主题的任何提示或教程吗 StatET 2 00 现在对高级 可视化调试提供实验性支持 需要 Eclipse 3 6 或
  • 我如何查看 quantmod 包中所有可用的数据系列?

    如何显示可用的所有报价 数据系列的列表 例如使用雅虎的 getSymbols 我不知道有什么办法 TTR包有一个功能 stockSymbols 下载 NYSE AMEX 和 NASDAQ 的所有当前代码 它试图将它们采用雅虎可接受的格式 但
  • 无法将“gather”输出的列名称更改为默认名称以外的任何名称

    我正在尝试使用gather in the tidyr包 但我无法更改默认名称的输出列名称 例如 df data frame time 1 100 a 1 100 b 101 200 df long df gt gather foo bar
  • 获取包含矩阵行内最大值的列名称,该矩阵在数组内包含单独的最大值

    例如给出 dim1 lt c P PO C T dim2 lt c LL RR R Y dim3 lt c Jerry1 Jerry2 Jerry3 Q lt array 1 48 c 4 4 3 dimnames list dim1 di
  • 使用data.table进行聚合

    经过 SO 用户的多次建议后 我终于尝试将我的代码转换为使用data table library data table DT lt data table plate paste0 plate rep 1 2 each 5 id rep c
  • 更改ggplot2中的字体

    曾几何时 我改变了我的ggplot2字体使用windowsFonts Times windowsFont TT Times New Roman 现在 我无法摆脱这一切 在尝试设置family in ggplot2 theme 当我用不同的字
  • 斯皮尔曼相关性和联系

    我正在一小组配对排名上计算斯皮尔曼的 rho 斯皮尔曼因处理领带不当而闻名 例如 取2组8个排名 即使两组中有6个是平局 相关性仍然很高 gt cor test c 1 2 3 4 5 6 7 8 c 0 0 0 0 0 0 7 8 met
  • 如何在R中实现countifs函数(excel)

    我有一个包含 100000 行数据的数据集 我尝试做一些countifExcel 中的操作 但速度慢得惊人 所以我想知道R中是否可以完成这种操作 基本上 我想根据多个条件进行计数 例如 我可以指望职业和性别 row sex occupati
  • 闪亮井板宽度

    library shiny library shinydashboard ui lt dashboardPage dashboardHeader dashboardSidebar dashboardBody wellPanel tags d

随机推荐

  • 有没有一种方法可以从同一进程中的另一个线程查看一个线程的寄存器内容?

    假设我有一个包含三个线程的进程 A B 和 C 我想使用线程 A 暂停线程 B 检查线程 B 的寄存器值 堆栈内容 然后将线程 B 中的一些信息提供给线程 C 通过线程 A 根据this http yarchive net comp lin
  • 如何在 C 中初始化多维字符数组?

    我正在尝试将一些代码从 C 转换为 C 以便可以将其烧录到微控制器上 有人可以告诉我如何将 C 中的二维字符串数组转换为 C 中的内容吗 我的 C 代码如下所示 string DirectionPosition 00 10 01 01 11
  • 如何使用RequestBodyAdvice

    ControllerAdvice public class RequestBodyAdviceChain implements RequestBodyAdvice Override public boolean supports Metho
  • 用不同的字符串多次替换相同的字符[重复]

    这个问题在这里已经有答案了 我有一个字符串多次包含相同的字符 我想用数组中的不同字符串替换每次出现的该字符 IE 就像准备好的声明中一样 String SELECT FROM x WHERE a AND b Array alpha beta
  • C++ Builder XE2,TXMLDocument“禁止 DTD”

    当我尝试使用 DTD 读取 XML 文档 eagle 文件 时 出现错误 项目 xx 引发异常类 EDOMParserError 并显示消息 DTD is 禁止 XML 标头如下所示 如果我删除第二行 一切正常 经过一番谷歌搜索后 MSXM
  • Python 3 多处理池因变量较大而速度缓慢

    我在 Python 3 中使用多处理池时遇到了一个非常特殊的问题 请参阅下面的代码 import multiprocessing as MP class c object def init self self foo def a self
  • 名为 noMethodError ruby​​ 的私有方法

    我一直在尝试解决以下问题并遇到错误 问题的关键是使用给定的密钥序列来加密字符串 例如 当给出 cat 和 1 2 3 时 结果应该是 dcw 有什么建议么 错误如下 def vigenere cipher string key sequen
  • silverlight MatchTimeoutInMilliseconds bug:解决DomainServiceClientCodeGenerator

    银光5 Net框架4 我正在尝试针对 RIA 代码生成器中最近的错误实施解决方法 找不到匹配超时毫秒 https connect microsoft com VisualStudio feedback details 1988437 gen
  • 使用 json 文件动态导入不起作用 typescript

    所以我编写了一个这样的函数来获取多个环境的测试数据 export class DataHelper public static async getTestData fileName string Promise
  • Hadoop:将多个IP地址绑定到集群NameNode

    我在 Softlayer 上有一个四节点 Hadoop 集群 Master NameNode 有一个用于外部访问的公共IP地址和一个用于集群访问的私有IP地址 从节点 数据节点 具有私有IP地址 我试图连接到主节点 而不需要为每个从节点分配
  • Node.js 服务器和客户端之间的变量

    我使用 Node js 运行一个简单的 http 服务器 var http require http var fs require fs var index fs readFileSync index html var sensor req
  • 将 YouTube Iframe API 与 Nativescript 结合使用?

    UPDATE 从 Manoj 下面的代码和其他一些来源 我现在可以将 youtube 播放器加载到基于 Youtube iframe api 的 webview 中 但问题仍然是 如何让我的应用程序识别视频本身何时开始播放 视频加载后以及任
  • Python:在主程序和 PEP 8 开头导入

    The PEP 8 http python org dev peps pep 0008 建议在程序开始时导入模块 现在 我觉得在开始时导入其中一些main程序 即 之后if name main 说得通 例如 如果主程序从命令行读取参数 我倾
  • 一个月内创建的 Rails 范围

    我在编写模型范围时遇到了一些问题 我想根据模型对象发布的月份来过滤模型对象 即模型 BlogPost scope published in month gt date where published date date at beginni
  • 如何指示 Ajax Minifier 从 javascript 中删除 console.log

    我的 js 文件中有这样的行 console log FunctionName 默认 Ajax Minifier 设置不会从 min js 输出中删除这些行 我在这次讨论中注意到关于终止开关的对话 http ajaxmin codeplex
  • idn-ruby 捆绑安装时出错

    我的应用程序中有 twitter text gem 当我进行捆绑安装时 出现以下错误 需要优先解决它 我也去了github页面https github com twitter twitter text issues 225 https gi
  • 图片来源UriKind

    我有一个项目 它的名称是 xx 我创建一个具有以下路径的文件夹 images xx bin 调试 图像 图像仅包含一张照片 其名称为 1 jpg 主窗口包含图像控件 我设置此代码来加载图像源 但它不起作用 为什么 private void
  • 在 AIR 应用程序安装屏幕上显示图标

    是否可以在 AIR 应用程序安装屏幕上显示图标 我下载了一个 AIR 应用程序 我很惊讶地在第二个安装屏幕上看到了一个图标 当您购买 SSL 证书并使用该证书构建 Air 应用程序时 安装过程中会显示此图标
  • SQLite:.Net 比原生慢得多?

    这是我的查询 SELECT FROM GeoName WHERE 26 3665122100029 Lat 26 3665122100029 Lat 27 5978928658078 Long 27 5978928658078 Long l
  • 4 年每日数据的滚动回归,每个新回归和不同因变量提前一个月

    我有 5 个自变量 附加数据中的 B F 列 和一些因变量 附加数据中的 G M 列 我需要针对所有自变量对每个因变量进行多重回归 回归必须有 4 年的数据窗口 并且每个新的估计都必须提前一个月 我需要提取系数并对每个系数进行 vasice