[R] kernel in library ts
Adrian Trapletti
adrian at olsen.ch
Thu Mar 8 11:37:17 CET 2001
> library(ts)
#
# The following works as I expected,
#
> kernel("daniell",m=5)
Daniell(5)
coef[-5] = 0.09091
coef[-4] = 0.09091
coef[-3] = 0.09091
coef[-2] = 0.09091
coef[-1] = 0.09091
coef[ 0] = 0.09091
coef[ 1] = 0.09091
coef[ 2] = 0.09091
coef[ 3] = 0.09091
coef[ 4] = 0.09091
coef[ 5] = 0.09091
#
# but the following does not. The doc says end points have
# weights halved.
#
> kernel("modified.daniell",m=5)
mDaniell(5)
coef[-5] = 0.10
coef[-4] = 0.10
coef[-3] = 0.10
coef[-2] = 0.10
coef[-1] = 0.10
coef[ 0] = 0.05
coef[ 1] = 0.10
coef[ 2] = 0.10
coef[ 3] = 0.10
coef[ 4] = 0.10
coef[ 5] = 0.10
#
# I do not know whether this is legal. Looking at the source I
# got the impression m can be a vector, and the Daniell kernel is
# applied in cascade. The resulting kernel seems to confirm this
# (because of its length) but the weights do not seem right. They
# are not even symmetrical;
#
> kernel("daniell",m=c(3,5,7))
unknown
coef[-15] = 0.0649351
coef[-14] = 0.0640693
coef[-13] = 0.0614719
coef[-12] = 0.0580087
coef[-11] = 0.0536797
coef[-10] = 0.0484848
coef[ -9] = 0.0424242
coef[ -8] = 0.0363636
coef[ -7] = 0.0303030
coef[ -6] = 0.0242424
coef[ -5] = 0.0181818
coef[ -4] = 0.0129870
coef[ -3] = 0.0086580
coef[ -2] = 0.0051948
coef[ -1] = 0.0025974
coef[ 0] = 0.0008658
coef[ 1] = 0.0649351
coef[ 2] = 0.0640693
coef[ 3] = 0.0614719
coef[ 4] = 0.0580087
coef[ 5] = 0.0536797
coef[ 6] = 0.0484848
coef[ 7] = 0.0424242
coef[ 8] = 0.0363636
coef[ 9] = 0.0303030
coef[ 10] = 0.0242424
coef[ 11] = 0.0181818
coef[ 12] = 0.0129870
coef[ 13] = 0.0086580
coef[ 14] = 0.0051948
coef[ 15] = 0.0025974
#
# Can someone clarify me on this?
#
This is an error in print.tskernel. The internal representation of the
kernel seems to be ok. The following print.tskernel does the right job:
print.tskernel<-function(k, digits = max(3, getOption("digits") - 3))
{
y <- c(rev(k$coef[2:(k$m + 1)]), k$coef)
i <- -k$m:k$m
cat(attr(k, "name"), "\n")
cat(paste("coef[", format(i), "] = ", format(y, digits = digits), sep =
""), sep = "\n")
}
You could use this print function until the bug is corrected in the R
source.
Adrian
PS: Brian: I did not fill out a bug report.
--
Dr. Adrian Trapletti, Olsen & Associates Ltd.
Seefeldstrasse 233, CH-8008 Zürich, Switzerland
Phone: +41 (1) 386 48 47 Fax: +41 (1) 422 22 82
E-mail: adrian at olsen.ch WWW: http://www.olsen.ch
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list