如何在特定值上对具有相同日期的所有行进行回归?
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 是结果
我是 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 是结果