[FLR-list] FLCohort

ernesto.jardim at jrc.ec.europa.eu ernesto.jardim at jrc.ec.europa.eu
Wed Oct 19 08:14:17 CEST 2011


On 10/18/2011 03:38 PM, Laurie wrote:
> On 10/18/2011 03:07 PM, ernesto.jardim at jrc.ec.europa.eu wrote:
>> On 10/18/2011 02:34 PM, Laurie wrote:
>>> On 10/18/2011 01:34 PM, ernesto.jardim at jrc.ec.europa.eu wrote:
>>>> On 10/18/2011 01:22 PM, Laurie wrote:
>>>>> 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
>>>>
>>>> Yes, sure ! But you get what you need computing year=cohort+age, so 
>>>> I don't see the need for a new one.
>>>>
>>>> Best
>>>>
>>>> EJ
>>>
>>> Same argument applies to FLQuant! However, the maths is easier in my 
>>> case using sweep & plyr if dims are year & cohort
>>>
>>> Laurie
>>
>> Fine, but we're not changing FLCohort so that you may use plyr. In 
>> that case you should create a new class like you're suggesting and 
>> use it.
>>
>> Best
>>
>> EJ
>
> I first looked at FLCohort in order to see if it could be modified to 
> allow the two cases to be included (i.e. age-cohort & year-cohort), 
> but found doing the aperms a bit tricky, hence the daply solution.
>
> I will create an FLYrCls for now.
>
> Laurie


Yes, with 6 dimensions aperm can get a bit trick very fast.

Best

EJ


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


More information about the flr-list mailing list