[FLR-list] fitting a custom SRModel with a covariate
Marc Taylor
marc.taylor at thuenen.de
Thu Apr 7 10:03:42 CEST 2016
Thanks Laurie. I would greatly appreciate the example if you are able to
find it.
Cheers,
Marc
Achtung: Das Thünen-Institut hat die Domain gewechselt. Bitte ändern Sie meine Mailadresse in Ihrem Adressbuch!
Notice: Thünen Institute has changed its domain. Please change my email address in your address book!
Dr. Marc Taylor
Marine Lebende Resourcen / Marine Living Resources
Thünen-Institut für Seefischerei / Thünen Institute of Sea Fisheries
Palmaille 9
22767 Hamburg, Germany
Tel: +49 40 38905-143
Mail: marc.taylor at thuenen.de
Web: www.ti.bund.de
On 4/7/2016 9:49 AM, laurie wrote:
> see, which is in FLCore
>
>
> rickerCa <- function() {
> logl <- function(a, b, c, rec, ssb, covar)
> loglAR1(log(rec), log(a * (1 - c * covar) * ssb * exp(-b * ssb)))
>
> initial <- structure(function(rec, ssb) {
> # The function to provide initial values
> res <-coefficients(lm(c(log(rec/ssb))~c(ssb)))
> return(FLPar(a=max(exp(res[1])), b=-max(res[2]), c=1))},
>
> # lower and upper limits for optim()
> lower=rep(-Inf, 3),
> upper=rep( Inf, 3))
>
> model <- rec ~ a * (1 - c * covar) * ssb * exp(-b * ssb)
> return(list(logl=logl, model=model, initial=initial))
> }
>
>
> There is an example using it somewhere, I will see if I can find it.
>
> Laurie
>
> On 07/04/16 09:37, Marc Taylor wrote:
>> Dear FLR-Listers,
>>
>> I was hoping someone might help me figure out a way to create a
>> custom SRModel that uses a covariate in addition to ssb and rec.
>>
>> From the documentation of SRModels (i.e. ?SRModels), reference is
>> made to several models that would be of interest to me (e.g.
>> 'ricker.c.a', 'ricker.c.b', etc.), but these do not appear to be
>> presently included in FLCore. I made an attempt (below) to define a
>> custom model, but am getting errors when fitting with fmle().
>>
>> If anyone has any experience with such models, I would greatly
>> appreciate any advise.
>>
>> Cheers,
>> Marc
>>
>> *Example script*:
>>
>> # packages
>> ----------------------------------------------------------------
>> library(FLCore) # FLCore_2.5.20160107
>>
>>
>> # load data
>> ---------------------------------------------------------------
>>
>> data("ple4")
>>
>>
>> # make srr obbject and add covariate
>> --------------------------------------
>>
>> ple4Sr <- as.FLSR(ple4)
>>
>> env1 <- c(-0.81, -1.73, -0.09, 0.42, -1.01, -1.06, -0.79, -0.42, -0.74,
>> -0.3, 0.25, 0.09, -0.18, -0.29, 0.13, 0.09, 0.48, 0.33, 0.41,
>> 0.4, -0.21, -0.64, -0.97, -0.02, -0.19, 0.28, -0.03, -0.19, -0.47,
>> -0.97, -0.88, 0.23, 0.82, 0.92, 0.17, 0.67, -0.07, 0.32, 0.9,
>> -0.64, 0.97, 0.54, 1.18, 0.67, 0.44, 1.29, 1.54, 1.22, 0.47,
>> 1.04, 1.31, 1.06)
>>
>> ple4Sr at covar <- FLQuants(list(env1=FLQuant(env1, dim=dim(ple4Sr at ssb),
>> dimnames=dimnames(ple4Sr at ssb))))
>> ple4Sr at covar$env1
>>
>>
>> # attempt with existing SRModel fails
>> model(ple4Sr) <- "ricker.c.a"
>> # Error in do.call(value, list()) : could not find function "ricker.c.a"
>>
>>
>>
>> # make new srr function
>> ---------------------------------------------------
>>
>> # adapt ricker
>> ricker <- function(){
>> logl <- function(a, b, rec, ssb) loglAR1(log(rec), log(a *
>> ssb * exp(-b * ssb)))
>> initial <- structure(function(rec, ssb) {
>> res <- coefficients(lm(log(c(rec)/c(ssb)) ~ c(ssb)))
>> return(FLPar(a = max(exp(res[1])), b = -max(res[2])))
>> }, lower = rep(-Inf, 2), upper = rep(Inf, 2))
>> model <- rec ~ a * ssb * exp(-b * ssb)
>> return(list(logl = logl, model = model, initial = initial))
>> }
>>
>> # to this (incl. env. control term - 'env1')
>> ri.ec <- function(){
>> logl <- function(a, b, e1, rec, ssb, env1) loglAR1(log(rec), log(a *
>> ssb * exp(-b * ssb) * exp(e1 * env1)))
>> initial <- structure(function(rec, ssb, env1) {
>> res <- coefficients(lm(log(c(rec)/c(ssb)) ~ c(ssb) + c(env1)))
>> return(FLPar(a = max(exp(res[1])), b = -max(res[2], env1 =
>> max(res[3]))))
>> }, lower = rep(-Inf, 3), upper = rep(Inf, 3))
>> model <- rec ~ a * ssb * exp(-b * ssb) * exp(e1 * env1)
>> return(list(logl = logl, model = model, initial = initial))
>> }
>>
>>
>> # fit SRR
>> -----------------------------------------------------------------
>> model(ple4Sr) <- "ri.ec"
>> ple4Sr <- fmle(ple4Sr)
>> # Error in loglAR1(log(rec), log(a * ssb * exp(-b * ssb) * exp(e1 *
>> env1))) :
>> # error in evaluating the argument 'hat' in selecting a method for
>> function 'loglAR1': Error: argument "e1" is missing, with no default
>> summary(ple4Sr)
>> plot(ple4Sr)
>> --
>> Achtung: Das Thünen-Institut hat die Domain gewechselt. Bitte ändern Sie meine Mailadresse in Ihrem Adressbuch!
>> Notice: Thünen Institute has changed its domain. Please change my email address in your address book!
>>
>> Dr. Marc Taylor
>> Marine Lebende Resourcen / Marine Living Resources
>> Thünen-Institut für Seefischerei / Thünen Institute of Sea Fisheries
>> Palmaille 9
>> 22767 Hamburg, Germany
>>
>> Tel: +49 40 38905-143
>> Mail:marc.taylor at thuenen.de
>> Web:www.ti.bund.de
>>
>>
>> _______________________________________________
>> flr-list mailing list
>> flr-list at flr-project.org
>> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/flr-list
>
>
>
> _______________________________________________
> flr-list mailing list
> flr-list at flr-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/flr-list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/flr-list/attachments/20160407/c3b00167/attachment-0001.html>
More information about the flr-list
mailing list