如何对值上具有相同日期的所有行进行回归?
How to regress all rows with the same date on a 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 年。
我需要获取 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 <- bmp %>% group_by(Dates) %>%
+ + summarise(Y5=predict(lm(YTM ~ DTM), newval))
Error in eval(predvars, data, env) : object 'YTM' not found
bmp5y <- bmp %>% group_by(dates) %>%
+ summarise(Y5=predict(lm(ytm ~ dtm), newval))
Error in grouped_df_impl(data, unname(vars), drop) :
Column dates
is unknown
bmp5y <- bmp %>% group_by(Dates) %>%
+ summarise(Y5=predict(lm(ytm ~ dtm), newval))
Error in summarise_impl(.data, dots) :
Column Y5
must be length 1 (a summary value), not 6563
In addition: Warning message:
'newdata' had 1 row but variables found have 6563 rows
好像是什么问题?
从问题中不清楚正在使用哪些代码和数据,但以可重现和可验证的方式重建它,将下面的代码复制并粘贴到新的 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
我是 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 <- bmp %>% group_by(Dates) %>% + + summarise(Y5=predict(lm(YTM ~ DTM), newval)) Error in eval(predvars, data, env) : object 'YTM' not found
bmp5y <- bmp %>% group_by(dates) %>% + summarise(Y5=predict(lm(ytm ~ dtm), newval)) Error in grouped_df_impl(data, unname(vars), drop) : Column
dates
is unknownbmp5y <- bmp %>% group_by(Dates) %>% + summarise(Y5=predict(lm(ytm ~ dtm), newval)) Error in summarise_impl(.data, dots) : Column
Y5
must be length 1 (a summary value), not 6563 In addition: Warning message: 'newdata' had 1 row but variables found have 6563 rows
好像是什么问题?
从问题中不清楚正在使用哪些代码和数据,但以可重现和可验证的方式重建它,将下面的代码复制并粘贴到新的 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