如何修复 R 中 FRED 数据聚合 returns 的 LAG LOG 上的 NA 错误
How to fix NA error on the LAG LOG aggregated returns in R for FRED data
我很难理解为什么 apply.quarterly()
函数没有真正给我季度 returns 并返回 NA 以及为什么我的 diff(log())
函数也不能处理 FRED 数据。也许我做错了什么,但我真的不明白是什么。有人可以帮我理解或解决这个问题吗?
我使用的代码:
library("quantmod")
#Getting FRED data exchange rate
setDefaults(getSymbols,src='FRED')
getSymbols('DEXNOUS')
#DEXNOUS <- as.data.frame(DEXNOUS)
#Getting SP500
getSymbols("^GSPC",src="yahoo")
GSPC <- as.data.frame(GSPC)
#Getting Brent blend oil
setDefaults(getSymbols,src='FRED')
getSymbols("POILBREUSDM",src = "FRED")
#POILBREUSDM <- as.data.frame(POILBREUSDM)
#Aggregating the data
GSPC_AVG_QUARTER<- apply.quarterly(GSPC,mean)
POILBREUSDM_AVG_QUARTER <- apply.quarterly(POILBREUSDM,mean)
DEXNOUS_AVG_QUARTER <- apply.quarterly(DEXNOUS,mean) #for some reason returning NA
#Calculating the log returns
n <- length(GSPC_AVG_QUARTER)
log_returns_GSPC_AVG_QUARTER <- diff(log(GSPC_AVG_QUARTER$GSPC.Adjusted))
ns <- length(POILBREUSDM_AVG_QUARTER)
log_returns_POILBREUSDM_AVG_QUARTER <- diff(log(POILBREUSDM_AVG_QUARTER))
nd <- length(DEXNOUS_AVG_QUARTER)
log_returns_DEXNOUS_AVG_QUARTER <- diff(log(DEXNOUS_AVG_QUARTER)) #na
汇总数据的结果片段:
差异日志结果的片段 returns:
如果有人能帮我解决这个问题,我将不胜感激。
注意:我在 CET 14/02/2022 22:28 编辑了此 post 上的代码,但我仍然收到关于汇率的 FRED 数据的错误。
进行这些更改:
- 不要将 xts 对象转换为数据帧
- 建议不要使用setDefaults
- n、ns 和 nd 未使用,这些行已删除。
- 添加 na.rm = TRUE 表示
- 使用 Ad(...) 提取调整后的列
- 已清理格式
这给了
library(quantmod)
getSymbols('DEXNOUS', src = 'FRED')
getSymbols("^GSPC", src = "yahoo")
getSymbols("POILBREUSDM", src = "FRED")
GSPC_AVG_QUARTER <- apply.quarterly(GSPC, mean, na.rm = TRUE)
POILBREUSDM_AVG_QUARTER <- apply.quarterly(POILBREUSDM, mean, na.rm = TRUE)
DEXNOUS_AVG_QUARTER <- apply.quarterly(DEXNOUS, mean, na.rm = TRUE)
log_returns_GSPC_AVG_QUARTER <- diff(log(Ad(GSPC_AVG_QUARTER)))
log_returns_POILBREUSDM_AVG_QUARTER <- diff(log(POILBREUSDM_AVG_QUARTER))
log_returns_DEXNOUS_AVG_QUARTER <- diff(log(DEXNOUS_AVG_QUARTER))
#######
head(log_returns_GSPC_AVG_QUARTER, 3)
## GSPC.Adjusted
## 2007-03-30 NA
## 2007-06-29 0.049843241
## 2007-09-28 -0.005164808
head(log_returns_POILBREUSDM_AVG_QUARTER, 3)
## POILBREUSDM
## 1990-03-01 NA
## 1990-06-01 -0.2181184
## 1990-09-01 0.5069333
head(log_returns_DEXNOUS_AVG_QUARTER, 3)
## DEXNOUS
## 1971-03-31 NA
## 1971-06-30 -0.003084078
## 1971-09-30 -0.015590386
我很难理解为什么 apply.quarterly()
函数没有真正给我季度 returns 并返回 NA 以及为什么我的 diff(log())
函数也不能处理 FRED 数据。也许我做错了什么,但我真的不明白是什么。有人可以帮我理解或解决这个问题吗?
我使用的代码:
library("quantmod")
#Getting FRED data exchange rate
setDefaults(getSymbols,src='FRED')
getSymbols('DEXNOUS')
#DEXNOUS <- as.data.frame(DEXNOUS)
#Getting SP500
getSymbols("^GSPC",src="yahoo")
GSPC <- as.data.frame(GSPC)
#Getting Brent blend oil
setDefaults(getSymbols,src='FRED')
getSymbols("POILBREUSDM",src = "FRED")
#POILBREUSDM <- as.data.frame(POILBREUSDM)
#Aggregating the data
GSPC_AVG_QUARTER<- apply.quarterly(GSPC,mean)
POILBREUSDM_AVG_QUARTER <- apply.quarterly(POILBREUSDM,mean)
DEXNOUS_AVG_QUARTER <- apply.quarterly(DEXNOUS,mean) #for some reason returning NA
#Calculating the log returns
n <- length(GSPC_AVG_QUARTER)
log_returns_GSPC_AVG_QUARTER <- diff(log(GSPC_AVG_QUARTER$GSPC.Adjusted))
ns <- length(POILBREUSDM_AVG_QUARTER)
log_returns_POILBREUSDM_AVG_QUARTER <- diff(log(POILBREUSDM_AVG_QUARTER))
nd <- length(DEXNOUS_AVG_QUARTER)
log_returns_DEXNOUS_AVG_QUARTER <- diff(log(DEXNOUS_AVG_QUARTER)) #na
汇总数据的结果片段:
差异日志结果的片段 returns:
如果有人能帮我解决这个问题,我将不胜感激。
注意:我在 CET 14/02/2022 22:28 编辑了此 post 上的代码,但我仍然收到关于汇率的 FRED 数据的错误。
进行这些更改:
- 不要将 xts 对象转换为数据帧
- 建议不要使用setDefaults
- n、ns 和 nd 未使用,这些行已删除。
- 添加 na.rm = TRUE 表示
- 使用 Ad(...) 提取调整后的列
- 已清理格式
这给了
library(quantmod)
getSymbols('DEXNOUS', src = 'FRED')
getSymbols("^GSPC", src = "yahoo")
getSymbols("POILBREUSDM", src = "FRED")
GSPC_AVG_QUARTER <- apply.quarterly(GSPC, mean, na.rm = TRUE)
POILBREUSDM_AVG_QUARTER <- apply.quarterly(POILBREUSDM, mean, na.rm = TRUE)
DEXNOUS_AVG_QUARTER <- apply.quarterly(DEXNOUS, mean, na.rm = TRUE)
log_returns_GSPC_AVG_QUARTER <- diff(log(Ad(GSPC_AVG_QUARTER)))
log_returns_POILBREUSDM_AVG_QUARTER <- diff(log(POILBREUSDM_AVG_QUARTER))
log_returns_DEXNOUS_AVG_QUARTER <- diff(log(DEXNOUS_AVG_QUARTER))
#######
head(log_returns_GSPC_AVG_QUARTER, 3)
## GSPC.Adjusted
## 2007-03-30 NA
## 2007-06-29 0.049843241
## 2007-09-28 -0.005164808
head(log_returns_POILBREUSDM_AVG_QUARTER, 3)
## POILBREUSDM
## 1990-03-01 NA
## 1990-06-01 -0.2181184
## 1990-09-01 0.5069333
head(log_returns_DEXNOUS_AVG_QUARTER, 3)
## DEXNOUS
## 1971-03-31 NA
## 1971-06-30 -0.003084078
## 1971-09-30 -0.015590386