ดูเหมือนว่าแพ็คเกจ tempdisagg ไม่อนุญาตให้มีการกระจายรายเดือนหรือรายวัน จากtd()
อาร์กิวเมนต์ไฟล์ช่วยเหลือ 'ถึง':
ความถี่ปลายทางความถี่สูงเป็นสตริงอักขระ ("รายไตรมาส" หรือ "รายเดือน") หรือเป็นสเกลาร์ (เช่น 2, 4, 7, 12) หากซีรี่ย์อินพุตเป็นวัตถุ ts อาร์กิวเมนต์จำเป็นถ้าไม่มีตัวบ่งชี้กำหนด หากซีรีย์อินพุตเป็นเวกเตอร์จะต้องเป็นสเกลาร์ที่แสดงอัตราส่วนความถี่
ข้อความแสดงข้อผิดพลาด "'ถึง' อาร์กิวเมนต์: สตริงอักขระที่ไม่รู้จัก" เป็นเพราะto =
อาร์กิวเมนต์ยอมรับเฉพาะ 'รายไตรมาส' หรือ 'รายเดือน' เป็นสตริง
มีการอภิปรายเกี่ยวกับการกระจายข้อมูลรายเดือนเป็นรายวันในสถิติ stackexchage ได้ที่นี่: /stats/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. ทั้งคู่เข้าด้วยกัน เนื่องจากพวกมันเหมือนกันการ overplotting ในภาพที่สามจะแสดงเพียงภาพเดียว
dput(head(x))
หรือdata.frame(...)
) โดยตรง ขอบคุณ!