[FLR-list] FLCohort

Laurie lauriekell at googlemail.com
Tue Oct 18 13:22:07 CEST 2011


On 10/18/2011 01:10 PM, Ernesto Jardim wrote:
>
>
> On Tue, Oct 18, 2011 at 1:03 PM, Laurie <lauriekell at googlemail.com 
> <mailto:lauriekell at googlemail.com>> wrote:
>
>     On 10/18/2011 12:50 PM, ernesto.jardim at jrc.ec.europa.eu
>     <mailto:ernesto.jardim at jrc.ec.europa.eu> wrote:
>>     On 10/18/2011 12:02 PM, Laurie wrote:
>>>     On 10/18/2011 11:41 AM, ernesto.jardim at jrc.ec.europa.eu
>>>     <mailto:ernesto.jardim at jrc.ec.europa.eu> wrote:
>>>>     On 10/18/2011 11:26 AM, Laurie wrote:
>>>>>     I am working on tagging models, where tags are released for a
>>>>>     number of  years and then recaptured in subsequent years. This
>>>>>     allows M & Z to be estimated along a cohort.
>>>>>
>>>>>     The data are in the form of number of fish tagged and
>>>>>     recovered each year of a cohort. This means that you can´t use
>>>>>     FLCohort which has age & cohort as dims 1&2.
>>>>>
>>>>>     However, if you use the 1st dim for cohort then you can model
>>>>>     this with an FLQuant, i.e.
>>>>>
>>>>>     library(plyr)
>>>>>
>>>>>     setGeneric("I",              function(object,...)
>>>>>         standardGeneric("I"))
>>>>>     setGeneric('O',              function(object, ...)
>>>>>         standardGeneric("O"))
>>>>>
>>>>>     setMethod('I', signature(object='FLQuant'),
>>>>>       function(object,...){
>>>>>         dmns <-dimnames(object)
>>>>>         dmns[[1]]
>>>>>     <-ac((dims(object)$minyear-dims(object)$max):(dims(object)$maxyear-
>>>>>     dims(object)$min))
>>>>>         names(dmns)[1]<-"quant"
>>>>>         flc <-FLQuant(NA,dimnames=dmns)
>>>>>
>>>>>         t. <-as.data.frame(object)
>>>>>         t.$cohort <-t.$year-t.$age
>>>>>         flc[]
>>>>>     <-daply(t.,c("cohort","year","unit","season","area","iter"),function(x)
>>>>>     sum(x$data))
>>>>>
>>>>>         return(flc)})
>>>>>
>>>>>     setMethod('O', signature(object='FLQuant'),
>>>>>       function(object,...){
>>>>>         dmns <-dimnames(object)
>>>>>         dmns[[1]]
>>>>>     <-ac((dims(object)$maxyear-dims(object)$max):(dims(object)$minyear-dims(object)$min))
>>>>>         names(dmns)[1]<-"age"
>>>>>         flc <-FLQuant(NA,dimnames=dmns)
>>>>>
>>>>>         t. <-as.data.frame(object)
>>>>>         t.$age <-t.$year-t.$quant
>>>>>         t. <-t.[!is.na <http://is.na>(t.$data),]
>>>>>         flc[]
>>>>>     <-daply(t.,c("age","year","unit","season","area","iter"),function(x)
>>>>>     sum(x$data))
>>>>>
>>>>>         return(flc)})
>>>>>
>>>>>     data(ple4)
>>>>>
>>>>>     m1=I(m(ple4))
>>>>>     m2=O(m1)
>>>>>
>>>>>     It is probably best to derive a new class for this object just
>>>>>     to break VPAs etc. But what to call it? Also how does it
>>>>>     relate to FLCohort.
>>>>>     Laurie
>>>>
>>>>     You may change the age in FLCohort
>>>>
>>>>     library(FLCore)
>>>>     data(ple4)
>>>>     flc <- FLCohort(catch.n(ple4))
>>>>     quant(flc) <- "year"
>>>>
>>>>     why not using year in the first dimension ? it should work out
>>>>     of the box.
>>>>
>>>>     EJ
>>>>
>>>>
>>>     But you don´t get what you want.
>>>
>>>
>>>
>>>
>>>
>>>
>>>     I(m(ple4))[1:10,1:10]
>>>     An object of class "FLQuant"
>>>     , , unit = unique, season = all, area = unique
>>>
>>>            year
>>>     quant  1957 1958 1959 1960 1961 1962 1963 1964 1965 1966
>>>        1947 0.1   NA   NA   NA   NA   NA   NA   NA   NA   NA
>>>        1948 0.1  0.1  <tel:1948%200.1%20%200.1>    NA   NA   NA   NA   NA   NA   NA   NA
>>>        1949 0.1  0.1  <tel:1949%200.1%20%200.1>   0.1   NA   NA   NA   NA   NA   NA   NA
>>>        1950 0.1  0.1  0.1  0.1   NA   NA   NA   NA   NA   NA
>>>        19510.1  0.1  0.1  0.1  0.1  <tel:0.1%20%200.1%20%200.1%20%200.1%20%200.1>    NA   NA   NA   NA   NA
>>>        1952 0.1  0.1  0.1  0.1  0.1  0.1   NA   NA   NA   NA
>>>        1953 0.1  0.1  0.1  0.1  0.1  0.1  0.1   NA   NA   NA
>>>        1954 0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1   NA   NA
>>>        1955 0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1   NA
>>>        1956 0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1
>>>
>>>     units:  NA
>>>     >  FLCohort(m(ple4))[1:10,1:10]
>>>     An object of class "FLCohort"
>>>     , , unit = unique, season = all, area = unique
>>>
>>>          cohort
>>>     age  1947 1948 1949 1950 1951 1952 1953 1954 1955 1956
>>>        1   NA   NA   NA   NA   NA   NA   NA   NA   NA  0.1
>>>        2   NA   NA   NA   NA   NA   NA   NA   NA  0.1  0.1
>>>        3   NA   NA   NA   NA   NA   NA   NA  0.1  0.1  0.1
>>>        4   NA   NA   NA   NA   NA   NA  0.1  0.1  0.1  0.1
>>>        5   NA   NA   NA   NA   NA0.1  0.1  0.1  0.1  0.1  <tel:0.1%20%200.1%20%200.1%20%200.1%20%200.1>
>>>        6   NA   NA   NA   NA  0.10.1  0.1  0.1  0.1  0.1  <tel:0.1%20%200.1%20%200.1%20%200.1%20%200.1>
>>>        7   NA   NA   NA  0.1  0.1  0.1  0.1  0.1  0.1  0.1
>>>        8   NA   NA  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1
>>>        9   NA  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1
>>>
>>>     laurie
>>>
>>>
>>>
>>
>>     Lost me. What do you want ?
>>
>>     EJ
>>
>>
>>
>     There are three ways to represent the 1st two dims in an FLQuant.
>
>     i) age & year
>     ii) age & cohort
>     iii) cohort & year
>
>     (i) is FLQuant and (ii) is FLCohort; However we do not have (iii)
>     which is what I need for my tagging model.
>
>     I have created an "FLCohortYear" from an FLQuant by adding I() &
>     O() as coercion methods and validity that only allows 1st dim to
>     be called cohort.
>     But then we have two FLCohort objects which might conflict.
>
>     Laurie
>
>
>
> But you can use FLQuant and change the first dimension. You may need a 
> method to convert i) or ii) into it but shouldn't create any 
> conflicts. If you really need a new data structure and the problem 
> only affects tag data, call it FLTag and extend FLQuant.
>
> Best
>
> EJ
>
I would have called in FLCohort but some body got there 1st!

Having 2 versions of FLCohorts with different properties does raise an 
issue though.

Laurie


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/flr-list/attachments/20111018/683e77f4/attachment-0001.htm>


More information about the flr-list mailing list