[R] possible bug in "sspir" package?
Mark Scheuerell
Mark.Scheuerell at noaa.gov
Fri May 29 23:03:20 CEST 2009
Greetings,
I sent the message below to the developer of the contributed R package
"sspir", but have yet to receive any response. I would be very grateful
for any advice people have on the matter.
Thanks,
Mark
-------- Original Message --------
Subject: possible bug in sspir?
Date: Tue, 19 May 2009 16:08:41 -0700
From: Mark Scheuerell <mark.scheuerell at noaa.gov>
To: aas.claus.dethlefsen at nja.dk, dethlef at math.aau.dk, cld at rn.dk
Hi Claus,
I have been using the "sspir" package that you developed for use with R
and have found it very useful. Previously, all of the time series
models I had been fitting had gaussian errors, and everything seemed to
work quite well.
Recently, however, I became interested in some models for time series of
survival probabilities. Given the response variable is a proportion that
lies on [0,1], it seemed reasonable to fit a model with a binomial error
structure and logit link function. It is my understanding that if I were
to fit a similar model with "glm", the response variable can take one of
3 forms: (1) a vector with 2 levels (eg, 0 and 1) if the data are from
individuals; (2) a vector of the proportions in which case the
additional function call "weights" would be needed with a vector of the
number of trials; or (3) a 2xN matrix where the columns are successes
and failures, respectively.
When I try to fit a basic random-walk model using the "ssm" function,
however, I can only get option (3) above to work. That in itself is OK,
but it seems as though ssm and subsequent functions (eg, "kfs") want to
work on a Nx2 matrix instead. For example, the following lines should
produce an estimated state vector of length=20, but the result is length=2:
>y <- ts(cbind(rpois(20,20), rpois(20,100)), start=1, freq=1)
>ssm.fit <- ssm(t(y) ~ tvar(1), family=binomial(link="logit"), fit=FALSE)
>ssm.ex1.fit <- extended(ssm.ex1$ss)
>ssm.ex1.fit$m
Time Series:
Start = 1
End = 2
Frequency = 1
Series 1
[1,] -0.0498745
[2,] -0.1357787
If I try to trick the code and pass in the transpose of y, I get this error:
>y <- t(y)
>ssm.fit <- ssm(y ~ tvar(1), family=binomial(link="logit"), fit=FALSE)
>ssm.ex1.fit <- extended(ssm.ex1$ss)
Error in ss$Fmat(tt, ss$x, ss$phi) : subscript out of bounds
When I went in and looked at the details of the ssm code, I saw that on
lines 146-151, the code is trying to establish the vectors for the
number of trials ("ntotal") and the response ("y") based on the rows of
the input matrix y rather than based on the columns. Thus, if I change
those lines and rerun the code above, I do in fact get an estimated
state vector of length=20 (and the estimates seem reasonable). My
modified version of your code is attached to this msg (ssm2.r).
I also have an additional question that may or may not be related to
this. If I fit a random-walk model using the approach outlined above and
my ssm2 function (assuming it is correct), the point estimates of the
state vector are nearly identical to the "observed" data. However, if I
first do a logit transform of the proportions and then use ssm (or my
version) with gaussian errors, the point estimates of the state vector
are not nearly as close as those obtained with the binomial error
structure (see my attached code "ssm_bin_ex.r"). I can understand why
the variance of the estimates would differ, but why the means? If I fit
some dummy models for non-time series models with glm, the estimates of
the means using the 2 approaches just outlined are nearly identical (see
my attached code "glm_bin_ex.r").
I would be sincerely grateful for any help or insights you could offer
with respect to my problems.
Best wishes,
Mark
_____________________________
Mark D. Scheuerell, Ph.D.
National Marine Fisheries Service
Northwest Fisheries Science Center
2725 Montlake Blvd E
Seattle, WA 98112
USA
206.302.2437 tel
206.860.3400 fax
http://www.nwfsc.noaa.gov/mark.scheuerell
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: ssm_bin_ex.r
URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20090529/13a248ed/attachment-0006.pl>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: glm_bin_ex.r
URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20090529/13a248ed/attachment-0007.pl>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: ssm2.r
URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20090529/13a248ed/attachment-0008.pl>
More information about the R-help
mailing list