I은 covariance
함수의 출력은 convert.to.vec
인지 다를 것이다다른 결과는 개체
prices <- c(11.44, 12.64, 13.12, 11.98, 19.34)
dates <- seq(as.Date("2011-07-01"), by=1, len=length(prices))
ts.prices <- xts(prices, order.by =dates)
covariance <- function(x, convert.to.vec=FALSE) {
if (convert.to.vec == TRUE)
x <- as.vector(x)
xbar <- mean(x)
N <- length(x)
i <- 1
covariance <- sum((x[1:(N-i)]-xbar)*(x[(1+i):N]-xbar))
return(covariance)
}
다음 원래의 코드가 TRUE
또는 FALSE
:
> covariance(ts.prices, TRUE)
[1] -5.679376
> covariance(ts.prices, FALSE)
[1] 4.445328
일부 변수를 추가하고 print
을 추가하면 코드를 쉽게 디버깅 할 수 있습니다.
FALSE
될 때 3 개 부동 번호가 포함 반면
> covariance(ts.prices, TRUE)
[1] -2.264 -1.064 -0.584 -1.724
[1] -1.064 -0.584 -1.724 5.636
[1] 2.408896 0.621376 1.006816 -9.716464
[1] -5.679376
> covariance(ts.prices, FALSE)
[,1]
2011-07-01 -2.264
2011-07-02 -1.064
2011-07-03 -0.584
2011-07-04 -1.724
[,1]
2011-07-02 -1.064
2011-07-03 -0.584
2011-07-04 -1.724
2011-07-05 5.636
e1
2011-07-02 1.132096
2011-07-03 0.341056
2011-07-04 2.972176
[1] 4.445328
convert.to.vec
가 TRUE
이다 term.3
, 4 개 플로팅 번호가 포함 23,259,247,539,253,210
우리 term.3
의 값이 다른 하나 인 것을 알 수있다. 그래서 다른 값은 두 개의 xts 객체와 두 개의 vector'ed xts 객체의 곱셈에 의해 발생한다고 가정합니다. 왜 이런 경우입니까? 자신의 인덱스가 동일하지 않은 경우 우리가 볼 수있는 등 +
또는 *
같은 Ops.xts
함수는 두 개의 xts
객체에 사용되는 @ alexis_laz의 의견에 기초
DC
[Joshua의 대답은 여기에 있습니다.] (http://stackoverflow.com/a/10516245/2414948)와 관련이 있습니다. 'Ops.xts'는 산술 연산이 일어나기 전에 겹치는 "인덱스"를 설명하기 위해 merge.xts를 사용하는 것으로 보입니다. –
@alexis_laz 링크를 제공해 주셔서 감사합니다. 수락 할 수 있도록 답으로 게시 할 수 있습니까? – DivineComedy
필자는'xts' 문서를 완전히 알지 못하므로 공식적인 답을 작성하는 방법을 모릅니다. 링크 된 품질 관리가 충분하다면 중복으로 표시 될 수 있습니다. –