我是新用的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行
什么似乎是问题?
答案 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