2 Classes de representação espaço temporal

No Rcitrus, foram implementadas outras classes para possibilitar a representação espaço-temporal. Essas classes facilitam a manipulação e as análises estatísticas. As classes utilizadas são adaptações das classes array do pacote básico, geodata do pacote geoR (?) e Surv do pacote Survival (?). Para particularizar essas classes usadas para dados de plantas, o objeto é identificado como sendo da classe citrus, além dessas.

2.1 Classes citrus e array

É utilizado um array com três dimensões, em que a primeira dimensão indica a linha de plantas, a segunda indica as plantas na linha e a terceira indica as avaliações feitas em tempos diferentes. Este formato de dados é particularmente útil na análise por quadrats. Os dados de Pinta Preta em Itajobi, estão em um data.frame. Usando a função as.citrus para podemos converte-lo para array.


  > fram.ita <- as.citrus(ita, find.form = "array")

Inspencionando o objeto:


  > fram.ita


  Disease plant data in 1 evaluations of
  62 rows of plants and 58 plants in each row.


  > class(fram.ita)


  [1] "citrus" "array"


  > dim(fram.ita)


   Rows  Cols Evals
     62    58     1

Também podemos usar a função as.citrus() para converter os dados do talhão 303, considerando os dados de mais de uma avaliação e os atributos do talhão. Basta usar os demais argumentos da função:


  > args(as.citrus)


  function (data, find.form = c("array", "geodata", "Surv"), nrow = NULL,
      row.id = NULL, col.id = 1, n.att = NULL, col.nam.att = 1,
      col.val.att = 2, pos.date = -2, x = NULL, y = NULL, cod.start = 0:2,
      cod.event = 1:3, order = "dmy", ref.date = "01/01/2001")
  NULL

Deve-se informar: o número de ruas no talhão (nrow), a identificação da primeira rua do talhão (row.id), coluna com os códigos identificadores (col.id), número de atributos do talhão (n.att), coluna onde estão os nomes dos atributos (col.nam.att), coluna onde estão os valores dos atributos (col.val.att) e posição onde estão as datas de avaliações em relação aos dados (pos.date)


  > o303.array <- as.citrus(ori303, nrow = 20, row.id = 1, n.att = 13)

Inspensionando o objeto:


  > o303.array


  Disease plant data in 25 evaluations of
  20 rows of plants and 48 plants in each row.


  > dim(o303.array)


   Rows  Cols Evals
     20    48    25


  > names(attributes(o303.array))


   [1] "dim"           "Municipio"     "Propriedade"   "Proprietario"
   [5] "Talhao"        "Variedade"     "PortaEnxerto"  "LinhasPlantas"
   [9] "PlantasLinhas" "EntreLinhas"   "DentroLinhas"  "Plantio"
  [13] "Latitude"      "Longitude"     "dimnames"      "class"


  > dimnames(o303.array)


  $Rows
   [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10" "11" "12" "13" "14"
  [15] "15" "16" "17" "18" "19" "20"
  
  $Cols
   [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10" "11" "12" "13" "14"
  [15] "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28"
  [29] "29" "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42"
  [43] "43" "44" "45" "46" "47" "48"
  
  $Evals
   [1] "08/01/2001" "08/08/2001" "08/16/2001" "08/22/2001" "08/29/2001"
   [6] "09/06/2001" "09/12/2001" "09/25/2001" "10/06/2001" "10/10/2001"
  [11] "11/07/2001" "12/06/2001" "01/08/2002" "02/12/2002" "03/15/2002"
  [16] "04/05/2002" "04/24/2002" "05/08/2002" "06/03/2002" "08/05/2002"
  [21] "01/10/2003" "02/10/2003" "03/06/2003" "04/14/2003" "05/09/2003"

Pode-se ver facilmente a evolução do status de uma planta ao longo das avaliações. Por exemplo, a planta 3 da linha 10:


  > o303.array[3, 10, ]


  08/01/2001 08/08/2001 08/16/2001 08/22/2001 08/29/2001 09/06/2001
         "0"        "0"        "0"        "0"        "0"        "0"
  09/12/2001 09/25/2001 10/06/2001 10/10/2001 11/07/2001 12/06/2001
         "0"        "0"        "0"        "0"        "0"        "0"
  01/08/2002 02/12/2002 03/15/2002 04/05/2002 04/24/2002 05/08/2002
         "0"        "0"        "0"        "0"        "0"        "1"
  06/03/2002 08/05/2002 01/10/2003 02/10/2003 03/06/2003 04/14/2003
         "1"        "1"        "3"        "3"        "3"        "3"
  05/09/2003
         "3"
  attr(,"Municipio")
  [1] "Comendador Gomes"
  attr(,"Propriedade")
  [1] "Vale Verde"
  attr(,"Proprietario")
  [1] ""
  attr(,"Talhao")
  [1] "303"
  attr(,"Variedade")
  [1] "Valencia"
  attr(,"PortaEnxerto")
  [1] "Cravo"
  attr(,"LinhasPlantas")
  [1] "20"
  attr(,"PlantasLinhas")
  [1] "48"
  attr(,"EntreLinhas")
  [1] "7.5"
  attr(,"DentroLinhas")
  [1] "4"
  attr(,"Plantio")
  [1] "1991"
  attr(,"Latitude")
  [1] ""
  attr(,"Longitude")
  [1] ""

2.2 Classe citrus e geodata

A classe geodata no geoR é uma lista contendo basicamente dois elementos: coords, da classe matrix com duas colunas representando as coordenadas das plantas no talhão, e data, da classe numeric com os atributos observados em cada planta. No Rcitrus, o elemento data é um data.frame onde cada coluna é uma avaliação no tempo e cada linha contém atributos e uma planta no tempo. Além disso há um elemento adicional, date, da classe character com as datas das avaliações. Este formato é utilizado para aplicação de análise de processos pontuais.

Pode-se converter dados de uma ou mais avaliações para o formato geodata, usando a função as.citrus() e colocando a opção find.form=’geodata’.

No caso de converter dados de uma única avaliação, dispostos em um simples data.frame, os dados de Itajobi por exemplo, deve-se informar o espa¸a  mento entre linhas x e dentro das linhas y:


  > geo.ita <- as.citrus(ita, find.form = "geodata", x = 8, y = 4)


  Carregando pacotes exigidos: geoR
  x = 8 y = 4

Ao digitar o nome do objeto temos a descrição sucinta dos dados:


  > geo.ita


  Disease plant data in 1 evaluations of
  62 rows of plants and 58 plants in each row.

Inspencionando o objeto:


  > class(geo.ita)


  [1] "citrus"  "geodata"


  > names(geo.ita)


  $coords
  NULL
  
  $data
  [1] "e1"
  
  $other
  [1] "dates"

A conversão dos dados de msc do talhão 303, pode ser feita de forma semelhante à conversão para array e adicionando find.form="geodata". Neste caso, não é necessário informar o espaçamento, pois este já é informado nos atributos do talhão:


  > o303.geo <- as.citrus(ori303, find.form = "geodata", nrow = 20,
  +     row.id = 1, n.att = 13)


  x = 7.5 y = 4

Inspencionando o objeto:


  > o303.geo


  Disease plant data in 25 evaluations of
  20 rows of plants and 48 plants in each row.


  > class(o303.geo)


  [1] "citrus"  "geodata"


  > names(o303.geo)


  $coords
  NULL
  
  $data
   [1] "e1"  "e2"  "e3"  "e4"  "e5"  "e6"  "e7"  "e8"  "e9"  "e10" "e11"
  [12] "e12" "e13" "e14" "e15" "e16" "e17" "e18" "e19" "e20" "e21" "e22"
  [23] "e23" "e24" "e25"
  
  $other
  [1] "dates"


  > dim(o303.geo$data)


  [1] 960  25

2.3 Classe citrus e Surv

A classe Surv é um objeto que contém informações do tempo de progresso da doença. No Rcitrus, é uma lista contendo: coords com as coordenadas das plantas no talhão e data com duas colunas: a primeira da classe Surv com tempo ate ocorrência do evento de interesse em formato padrão para análise de sobrevivência; e a segunda coluna contendo inteiros indicadores das linhas do elemento coords. Este formato pode ser usado na análise de sobrevivência com censura intervalar.

Para exemplo, tomaremos os dados validados do talhao 303, incluido no pacote Rcitrus sob nome v303.geo. Esses dados estão no mesmo formado do objeto o303.geo, porém já estão validados. Vamos considerar o evento morte como sendo o de interesse. Nesses dados as plantas sadias são representadas pelo código 0 (zero) e as mortas pelo código 3 (três).

Carregando os dados:


  > data(v303.geo)
  > class(v303.geo)


  [1] "citrus"  "geodata"


  > v303.geo


  Disease plant data in 25 evaluations of
  20 rows of plants and 48 plants in each row.

Basta usar a função citrus.conv para fazer a conversão:


  > v303.surv <- citrus.conv(v303.geo, find.form = "Surv", cod.start = 0,
  +     cod.event = 3)


  Carregando pacotes exigidos: survival
  Carregando pacotes exigidos: splines

Inspencionando os dados


  > class(v303.surv)


  [1] "citrus" "Surv"


  > names(v303.surv)


  [1] "coords"       "data"         "dates"        "n.subst.code"
  [5] "unselect"     "invalids"

Os intervalos de tempo das dez primeiras plantas do talhão:


  > v303.surv$data[1:10, ]


     left right
  1   248   833
  2   248    NA
  3   282    NA
  4   339    NA
  5   310   770
  6   267    NA
  7   248    NA
  8   282   833
  9   267   739
  10  339   833

Observa-se que a planta da posição 158 já tinha sintomas de msc na primeira avaliação e não chegou à morte na última avaliação:


  > v303.geo$data[155:160, ]


      Av1 Av2 Av3 Av4 Av5 Av6 Av7 Av8 Av9 Av10 Av11 Av12 Av13 Av14 Av15 Av16
  155   0   0   0   0   0   0   0   0   0    0    1    1    1    1    1    1
  156   0   0   0   0   0   0   0   0   0    0    1    1    1    1    1    1
  157   0   0   0   0   0   1   1   1   1    1    1    1    1    1    1    1
  158   1   1   2   2   2   2   2   2   2    2    2    2    2    2    2    2
  159   0   0   0   0   0   0   0   0   0    0    1    1    1    1    1    1
  160   0   0   0   0   0   0   0   0   1    1    1    1    1    1    1    1
      Av17 Av18 Av19 Av20 Av21 Av22 Av23 Av24 Av25
  155    1    1    1    1    1    1    1    3    3
  156    2    2    2    3    3    3    3    3    3
  157    1    1    1    2    2    2    2    3    3
  158    2    2    2    2    2    2    2    2    2
  159    1    1    1    1    1    1    1    1    1
  160    1    1    1    1    1    1    1    1    1

Então:


  > v303.surv$data[155:160, ]


      left right
  155  282   833
  156  282   581
  157  240   833
  158   NA    NA
  159  282    NA
  160  267    NA