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

时间:2017-09-21 13:49:15

标签: r linear-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年。

所有日期所有债券的情节 enter image description here

> plot(dtm, ytm, xlab = "Days to maturity", ylab = "Yield to maturity")
> abline(lm (ytm~dtm), col="red")

我在一次回归中绘制了所有日期的所有债券。我需要在x = 1300时得到y轴的值。但是,我需要分别为每个日期提供此信息。

2 个答案:

答案 0 :(得分:0)

您可以使用dplyr ...

执行此操作
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))

abn5y
       Dates       Y5
       <chr>    <dbl>
1 2010-09-28 3.119374
2 2010-09-29 3.138034
3 2010-09-30 3.161971

答案 1 :(得分:0)

library(plyr)
abn<-read.csv("abn.csv",stringsAsFactors = F)
dfs<-dlply(abn,.(Dates))

dailyYTM<-c()

for (i in unique(abn$Dates)){
    df<-dfs[[grep(i,names(dfs))]]
    model<-lm(df$YTM~df$DTM)
    dailyYTM[i]<-model$coefficients[1]+model$coefficients[2]*1300
}

不是效率最高的但我认为会做的技巧。结果是日常结果