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

How to regress all rows with the same date on a specific value?

我是 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 年。

所有日期的所有债券图

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

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

您可以使用 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
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
}

不是最有效的,但我认为可以做到 trick.dailyYTM 是结果