dplyr 和多重线性模型

2024-02-10

我正在尝试使用运行大量回归dplyr对于个人 ID (cusip) 和年份 (fyear) 但我不知道如何利用summary功能。我需要运行模型,获取系数,将它们加在一起,然后mutate结果到另一个变量beta。这是一些代码,虽然不起作用,但可以理解这个想法。

可重现的例子:

  tdata <- structure(list(cusip = c("02136810", "02136810", "02136810", 
"02136810", "02136810", "02136810", "02136810", "02136810", "02136810", 
"02136810", "02136810", "02136810", "02136810", "02136810", "02136810", 
"02136810", "02136810", "02136810", "02136810", "02136810", "02136810", 
"02136810", "02136810", "02136810", "01650910", "01650910", "01650910", 
"01650910", "01650910", "01650910"), fyear = c(1979L, 1979L, 
1979L, 1979L, 1979L, 1979L, 1979L, 1979L, 1979L, 1979L, 1979L, 
1979L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 
1980L, 1980L, 1980L, 1980L, 1965L, 1965L, 1965L, 1965L, 1965L, 
1965L), ret = c("0.000000", "0.000000", "0.111111", "-0.063636", 
"0.203883", "0.032258", "0.078125", "0.000000", "-0.014493", 
"-0.014706", "0.044776", "0.457143", "0.039216", "-0.009434", 
"-0.200000", "-0.047619", "0.100000", "0.022727", "0.144444", 
"0.067961", "-0.009091", "0.009174", "0.109091", "-0.077869", 
"0.418182", "-0.089744", "0.014085", "-0.041667", "-0.086957", 
"0.000000"), vwretd = c(0.049489, -0.026766, 0.065618, 0.008522, 
-0.013576, 0.04685, 0.014991, 0.064728, 0.001428, -0.07266, 0.063603, 
0.028212, 0.065607, 0.001015, -0.120224, 0.052288, 0.06009, 0.037714, 
0.069438, 0.023553, 0.029498, 0.020093, 0.104951, -0.034409, 
0.038646, 0.006946, -0.009715, 0.033652, -0.00435, -0.051868), 
    date = c(19790131L, 19790228L, 19790330L, 19790430L, 19790531L, 
    19790629L, 19790731L, 19790831L, 19790928L, 19791031L, 19791130L, 
    19791231L, 19800131L, 19800229L, 19800331L, 19800430L, 19800530L, 
    19800630L, 19800731L, 19800829L, 19800930L, 19801031L, 19801128L, 
    19801231L, 19650129L, 19650226L, 19650331L, 19650430L, 19650528L, 
    19650630L)), .Names = c("cusip", "fyear", "ret", "vwretd", 
"date"), row.names = c(NA, 30L), class = "data.frame")

dplyr 代码:

test <- tdata %>% 
  group_by(cusip, fyear) %>% 
  arrange(desc(date) %>% 
  summary(fm <- lm(ret ~ vwretd + lag(vwretd), data = tdata)) %>% 
  mutate(beta <- summary(fm)$coefficients[2,1] + summary(fm)$coefficients[3,1])

Edit :

样本数据 :https://www.dropbox.com/s/4padnsjjnt4uvy2/tdata.csv?dl=0 https://www.dropbox.com/s/4padnsjjnt4uvy2/tdata.csv?dl=0

完整样本:https://www.dropbox.com/s/4padnsjjnt4uvy2/tdata.csv?dl=0 https://www.dropbox.com/s/4padnsjjnt4uvy2/tdata.csv?dl=0


我们可以使用do

library(dplyr)
tdata %>% 
     group_by(cusip, fyear) %>% 
     arrange(desc(date)) %>% 
     do({fm <- lm(ret~vwretd+lag(vwretd), data=.)
          data.frame(., beta=summary(fm)$coefficients[2,1]+ 
                            summary(fm)$coefficients[3,1])})

我们还可以改变data.frame(., beta=....) in the do to

                    ---    %>%
      do({fm <- lm(ret~vwretd+lag(vwretd), data=.)    
          data.frame(., beta=sum(coef(fm)[-1]))})

Update

如果存在具有单个观察值的组组合,则会返回NA对于“测试版”

 tdata1 <- read.csv('tdata.csv', stringsAsFactors=FALSE)
 res <- tdata1 %>% 
             group_by(cusip, fyear) %>% 
             arrange(desc(date)) %>% 
             mutate(n=n()) %>%
             do(data.frame(., beta=ifelse(.$n > 1,
               sum(coef(lm(ret~vwretd+lag(vwretd), data=.))[-1]), NA)))


  as.data.frame(res)[1:3, c('date', 'cusip', 'ret','vwretd', 'beta')]
  #     date    cusip       ret    vwretd   beta
  #1 19691231 00080010 -0.012594 -0.019681 0.7932
  #2 19691128 00080010  0.001995 -0.032164 0.7932
  #3 19691031 00080010  0.113889  0.055638 0.7932

Update2

在完整数据集上

tdata2 <-  read.csv('tdatafull.csv', stringsAsFactors=FALSE)
tdata2$ret <- as.numeric(tdata2$ret)
res1 <- tdata2%>%  group_by(cusip, fyear) %>% 
           arrange(desc(date)) %>% 
           mutate(n=n()) %>%
           do(data.frame(., beta=ifelse(.$n > 2,
             sum(coef(lm(ret~vwretd+lag(vwretd), data=.))[-1]), NA)))
 head(res1)
 #     X    cusip fyear       ret    vwretd     date  n     beta
 #1 728188 00003210  1973  0.000000  0.011425 19731231 12 2.751094
 #2 728187 00003210  1973 -0.300000 -0.120703 19731130 12 2.751094
 #3 728186 00003210  1973 -0.166667 -0.000427 19731031 12 2.751094
 #4 728185 00003210  1973  0.043478  0.053937 19730928 12 2.751094
 #5 728184 00003210  1973 -0.258065 -0.029648 19730831 12 2.751094
 #6 728183 00003210  1973  0.291667  0.056954 19730731 12 2.751094

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

dplyr 和多重线性模型 的相关文章

随机推荐

  • DirectWrite (CreateTextFormat) 如何选择后备字体?

    的文档创建文本格式 http msdn microsoft com en us library windows desktop dd368203 v vs 85 aspx没有提及字体回退选择 但如果选择默认 NULL 系统 集合 则 Dir
  • @BOOL 属性设置器

    我在使用设置 BOOL 时遇到问题 property and synthesize 我在用着 property BOOL isPaused 我可以通过使用得到它 myObject isPaused 但我无法设置它 我想用 myObject
  • 列出 CRAN 上可用的所有软件包以进行控制台[重复]

    这个问题在这里已经有答案了 想要获取 Windows 控制台上 CRAN 上可用的所有软件包的列表 我知道这一定很简单 因为在 Windows GUI 上有一个手动选项可以单击安装 此时会弹出另一个菜单界面 其中包含 CRAN 上可用的所有
  • Linux shell:检测 CSV 日志文件的状态更改

    这是我自动生成的日志文件 连续一分钟检查我的互联网线路 cat log csv 2018 04 27 23 37 OK 2018 04 27 23 38 OK 2018 04 27 23 39 OK 2018 04 27 23 40 ERR
  • 将上传的文件保存到磁盘在 Flask 中不起作用[重复]

    这个问题在这里已经有答案了 我想将任何上传的图像存储到名为 logo png 的 static customlogos 文件夹中 无论其实际名称是什么 我有一个基本的 Flask 设置 其中包含典型的静态和模板文件夹 为了简单起见 我在下面
  • 如何知道是否有 git rebase 正在进行?

    当我开始一个git rebase i 我可以发出这样的命令git rebase continue or git rebase abort 这些命令仅在变基正在进行时才有效 我如何知道是否正在进行变基 我非常感谢有关 rebase 内部如何工
  • 如何在两个片段之间切换,而不需要每次都重新创建片段?

    我正在开发一个 Android 应用程序 它使用导航抽屉在两个片段之间切换 然而 每次切换时 片段都会完全重新创建 这是我主要活动的代码 The click listener for ListView in the navigation d
  • 如何在 Visual Studio Community 2013 中创建 ASP.NET MVC 5 Web 应用程序?

    我尝试在全新安装 Visual Studio Community 2013 后启动 MVC 5 项目 但是当我转到 新建项目 gt 模板 gt Visual C gt Web gt Version2012 我在中间窗格中看到的只是 ASP
  • 传递给模板函数的两个 lambda 使得参数的类型推导不明确——为什么?

    我有一个模板 如果我向它传递一个 lambda 它就可以工作 但是在一个将两个 lambda 映射到同一模板化类型的相关模板中 它无法推断出该类型 并且 MSVC Express 2013 抱怨模板参数不明确 首先要明确的是 这里没有发生重
  • 找到坐标 x 和 y 列表的优化位置

    我是编程新手 尤其是Python新手 但我正在努力学习它 到目前为止我发现它非常令人着迷 我有一个包含 30 个固定坐标 x 和 y 的列表 x np array 13 10 12 13 11 12 11 13 12 13 14 15 15
  • UIButton 状态已选择

    我看过很多有关更改所选按钮图像的信息 但作为新人 我在实现更简单的版本时遇到了一些麻烦 当按下按钮时 它会变暗 我希望它在被选择后保持这种状态 所以有几个问题 我是否为按钮创建 IBOutlet 然后使用 IBAction 来更改状态 例如
  • 从 pandas dropna 中排除特定列

    我有一个数据框 我想删除除特定列之外的所有列中的值 NA 在本例中为 V1 df V1 V2 V3 V4 A 10 20 NA B NA NA NA C 5 20 3 D 15 20 4 E NA 10 5 output V1 V2 V3
  • Node dotenv 不适用于 pm2

    我有一个应用程序 其中本地 没有 pm2 所有环境变量 env使用文件工作得很好dotenv 但在我使用的服务器上pm2要运行应用程序 环境变量仍然存在undefined 我用来在服务器上运行应用程序的 pm2 命令是 pm2 start
  • 无法激活机架(〜> 1.4.0,运行时)已激活机架1.5.0

    我已经寻找这个问题的答案一天多了 并彻底搜索了 StackOverflow 我了解正在发生的冲突 我应该卸载不需要的 Rack 版本 但事情是这样的 我正在Koding上开发 http koding com http koding com
  • 对于日期序列化:从 JAXB2 到 jackson-dataformat-xml 的 @XmlJavaTypeAdapter 的等效注释是什么?

    我有一个 Spring Web 应用程序4 3 6版本 在某种程度上 它可以与 XML 和 JSON 一起使用 对于 Json 我使用 Jackson 对于 XML 我曾经使用过JAXB2 但不再是因为它不支持通用集合 通用集合表示如下 p
  • 是否有“max”函数和分组的替代(聚合操作的性能优化)?

    我有一个很大的查询 它也返回很大的响应 查询如下所示 SELECT group subgroup max last update FROM SELECT a as group a1 as subgroup d1 as last update
  • 如何在覆盖它的网页上恢复console.log?

    Twitter 的网站做了类似的事情 console log function 将浏览器的内置console log方法进入无操作状态 有办法恢复原来的功能吗 除非他们也在原型中删除了它 否则得到log方法使用getPrototypeOf
  • TFS-SDK:合并不起作用

    作为更大实现的一部分 我尝试使用 TFS SDK 实现源代码控制分支 文件夹的合并操作 我正在针对 TFS2010 安装进行工作 我所拥有的是这样的 using System using Microsoft TeamFoundation C
  • 信息窗口不是中心位置 Android Google 地图 v2

    我在 Google 地图 v2 上的信息窗口上遇到问题 信息窗口位于标记左侧 此问题仅在 Samsung Galaxy S4 上重现 我安装了Google Api Demo 重现了 这是错误吗 如何修复它 我已在地图 v2 跟踪器上提交了此
  • dplyr 和多重线性模型

    我正在尝试使用运行大量回归dplyr对于个人 ID cusip 和年份 fyear 但我不知道如何利用summary功能 我需要运行模型 获取系数 将它们加在一起 然后mutate结果到另一个变量beta 这是一些代码 虽然不起作用 但可以