tempdisaggパッケージは毎月から毎日の分解を許可していないようです。td()
引数「から」ヘルプファイル:
文字列( "quarterly"または "monthly")またはスカラー(2、4、7、12など)としての送信先の頻度。入力系列がtsオブジェクトの場合、インジケーターが指定されていなければ引数が必要です。入力系列がベクトルの場合、toは周波数比を示すスカラーでなければなりません。
エラーメッセージ "to to argument:unknown character string"は、to =
引数が文字列として 'quarterly'または 'monthly'しか受け入れないためです。
stats stackexchageの月次データを毎日に分解することについての議論があります:https ://stats.stackexchange.com/questions/258810/disaggregate-monthly-forecasts-into-daily-data
少し調べたところ、月次データから日次データに分解されたデータを一貫して使用している人はいないようです。このtempdisagg
パッケージは、他のほとんどの人が可能であるとわかっているもの(年単位から四半期単位または月単位、および倍数でさえ一貫している期間)に対応できるようです。
エリック、私が理解しているように、あなたが何をしようとしているのかを説明するスクリプトを下に追加しました。
ここでは、実際の価格データを使用して、日次価格->月次価格->月次収益->平均日次収益から移動します。
library(quantmod)
library(xts)
library(zoo)
library(tidyverse)
library(lubridate)
# Get price data to use as an example
getSymbols('MSFT')
#This data has more information than we want, remove unwanted columns:
msft <- Ad(MSFT)
#Add new column that acts as an 'indexed price' rather than
# actual price data. This is to show that calculated returns
# don't depend on real prices, data indexed to a value is fine.
msft$indexed <- scale(msft$MSFT.Adjusted, center = FALSE)
#split into two datasets
msft2 <- msft$indexed
msft$indexed <- NULL
#msft contains only closing data, msft2 only contains scaled data (not actual prices)
# move from daily data to monthly, to replicate the question's situation.
a <- monthlyReturn(msft)
b <- monthlyReturn(msft2)
#prove returns based on rescaled(indexed) data and price data is the same:
all.equal(a,b)
# subset to a single year
a <- a['2019']
b <- b['2019']
#add column with days in each month
a$dim <- days_in_month(a)
a$day_avg <- a$monthly.returns / a$dim ## <- This must've been left out
day_avgs <- data.frame(day_avg = rep(a$day_avg, a$dim))
# daily averages timesereis from monthly returns.
z <- zoo(day_avgs$day_avg,
seq(from = as.Date("2019-01-01"),
to = as.Date("2019-12-31"),
by = 1)) %>%
as.xts()
#chart showing they are the same:
PerformanceAnalytics::charts.PerformanceSummary(cbind(a$monthly.returns, z))
以下は、1つの月次収益のみ、2。月次収益の日次平均、3。両方を示す3つのグラフです。それらは同一であるため、3番目の画像のオーバープロットは1つだけを示しています。
dput(head(x))
または、などdata.frame(...)
)を直接含めてください。ありがとう!