如何回归值上具有相同日期的所有行?

时间:2017-09-23 12:57:34

标签: r regression finance

我是新用的R.我有以下样本数据集:

> head(abn)
       Dates  DTM   YTM
1 2010-09-28 1133 2.965
2 2010-09-28 1834 3.613
3 2010-09-29 1132 2.994
4 2010-09-29 1833 3.595
5 2010-09-30 1131 3.026
6 2010-09-30 1832 3.590

观察结果是2010年至2016年观察期内的若干债券价值。我的数据集由多个债券组成,期限在1到15年之间(数据集中描述的260-3900个工作日)。 DTM代表成熟期和成熟期的YTM。

我的目标是建立一个每天成熟5年的合成债券。因此,我需要进行回归并找到DTM值为1300的YTM值,恰好是5年。

我需要在x = 1300时得到y轴的值。但是,我需要分别为每个日期提供此信息。

我得到了帮助,这个人给了我这个代码:

library(dplyr) newval <- data.frame(DTM=1300) #predict.lm likes new values in a dataframe abn5y <- abn %>% group_by(Dates) %>% summarise(Y5=predict(lm(YTM ~ DTM), newval))

这很有用。但是我加载了下一个数据集。

head(bmp))
   Dates   DTM   YTM
  <dttm> <dbl> <dbl>

1 2007-11-02 1498 4.782 2 2007-11-02 1892 4.883 3 2007-11-02 1300 4.934 4 2007-11-05 1497 4.768 5 2007-11-05 1891 4.880 6 2007-11-05 1299 4.924'

并使用相同的代码并得到以下错误,尝试不同。

  

bmp5y&lt; - bmp%&gt;%group_by(日期)%&gt;%   + +汇总(Y5 =预测(lm(YTM~DTM),newval))   eval中的错误(predvars,data,env):找不到对象'YTM'

     

bmp5y&lt; - bmp%&gt;%group_by(日期)%&gt;%   +总结(Y5 =预测(lm(ytm~dtm),newval))   grouped_df_impl(data,unname(vars),drop)出错:     列dates未知

     

bmp5y&lt; - bmp%&gt;%group_by(日期)%&gt;%   +总结(Y5 =预测(lm(ytm~dtm),newval))   summarise_impl(.data,dots)中的错误:     列Y5必须是长度1(汇总值),而不是6563   另外:警告信息:   'newdata'有1行,但找到的变量有6563行

什么似乎是问题?

1 个答案:

答案 0 :(得分:2)

从问题中确切地说,正在使用的是什么代码和数据,但是以可重现和可验证的方式重建它,将下面的代码复制并粘贴到新的R会话中并不清楚 - 它运行时没有任何错误消息给我:

Lines <- "
      Dates   DTM   YTM
1 2007-11-02 1498 4.782 
2 2007-11-02 1892 4.883 
3 2007-11-02 1300 4.934 
4 2007-11-05 1497 4.768 
5 2007-11-05 1891 4.880 
6 2007-11-05 1299 4.924"  
bmp <- read.table(text = Lines)

library(dplyr)
newval <- data.frame(DTM=1300)
bmp %>% group_by(Dates) %>% summarise(Y5=predict(lm(YTM ~ DTM), newval))

,并提供:

# A tibble: 2 x 2
       Dates       Y5
      <fctr>    <dbl>
1 2007-11-02 4.876237
2 2007-11-05 4.863499