X07 - Ejercicios

François Rebaudo, IRD francois.rebaudo@ird.fr

Marzo 2019 ; PUCE-Quito-Ecuador http://myrbooksp.netlify.com/

CC BY-NC-ND 3.0

Secuencias

Secuencias

Reproducir las siguientes secuencias:

  • -3 -4 -5 -6 -7 -8 -9 -10 -11
  • -3 -1 1 3 5 7 9 11
  • 3.0 3.2 3.4 3.6 3.8 4.0
  • 20 18 16 14 12 10 8 6
  • “a” “f” “k” “p” “u” “z”
  • “a” “a” “f” “f” “k” “k” “p” “p” “u” “u” “z” “z”
  • 0.00 0.67 1.33 2.00 2.67 3.33 4.00
  • 1_10_j 2_9_i 3_8_h 4_7_g 5_6_f 6_5_e 7_4_d 8_3_c 9_2_b 10_1_a

Secuencias: resultados

-3:-11
## [1]  -3  -4  -5  -6  -7  -8  -9 -10 -11

Secuencias: resultados

seq(from = -3, to = 11, by = 2)
## [1] -3 -1  1  3  5  7  9 11

Secuencias: resultados

seq(from = 3, to = 4, by = 0.2)
## [1] 3.0 3.2 3.4 3.6 3.8 4.0

Secuencias: resultados

seq(from = 20, to = 6, by = -2)
## [1] 20 18 16 14 12 10  8  6

Secuencias: resultados

letters[seq(from = 1, to = 26, by = 5)]
## [1] "a" "f" "k" "p" "u" "z"

Secuencias: resultados

letters[rep(seq(from = 1, to = 26, by = 5), each = 2)]
##  [1] "a" "a" "f" "f" "k" "k" "p" "p" "u" "u" "z" "z"

Secuencias: resultados

round(seq(from = 0, to = 4, length.out = 7), digits = 2)
## [1] 0.00 0.67 1.33 2.00 2.67 3.33 4.00

Secuencias: resultados

paste(1:10, 10:1, letters[rev(1:10)], sep = "_")
##  [1] "1_10_j" "2_9_i"  "3_8_h"  "4_7_g"  "5_6_f"  "6_5_e"  "7_4_d" 
##  [8] "8_3_c"  "9_2_b"  "10_1_a"

Manipular datos

Manipular datos

  • Generar 100 000 números en una ley Normal de parámetros mu = 0 y sd = 1
  • Guardar el resultado bajo el nombre misNum
  • ¿Cuales son los 14 numeros mas grandes?
  • ¿Cuales son los 8 numeros mas pequeños?
  • ¿Cuantos numeros son mas grandes que 2?
  • ¿Cuantos numeros son mas grandes que 2 o mas pequeños que -2?
  • ¿Cual es el promedio?
  • ¿Cual es la mediana?

Manipular datos

  • Generar 100 000 números en una ley Normal de parámetros mu = 0 y sd = 1
  • Guardar el resultado bajo el nombre misNum
misNum <- rnorm(100000, mean = 0, sd = 1)

Manipular datos

¿Cuales son los 14 numeros mas grandes?

head(sort(misNum, decreasing = TRUE), n = 14)
##  [1] 4.153580 4.037886 3.999662 3.953518 3.952292 3.897365 3.882302
##  [8] 3.849337 3.847753 3.797563 3.760647 3.719963 3.703218 3.663754

Manipular datos

¿Cuales son los 8 numeros mas pequeños?

head(sort(misNum), n = 8)
## [1] -4.159130 -4.083559 -4.040720 -3.817620 -3.712904 -3.700402 -3.681966
## [8] -3.626668

Manipular datos

¿Cuantos numeros son mas grandes que 2?

length(misNum[misNum > 2])
## [1] 2272

Manipular datos

¿Cuantos numeros son mas grandes que 2 o mas pequeños que -2?

length(misNum[misNum > 2 | misNum < -2])
## [1] 4537

Manipular datos

¿Cual es el promedio?

mean(misNum)
## [1] 0.0004745365

Manipular datos

¿Cual es la mediana?

median(misNum)
## [1] -0.001009594

Manipular datos (2)

Manipular datos

  • misNum <- rnorm(100000, mean = 0, sd = 1)
  • ¿Cuantos numeros hay entre [2 y 3[?
  • ¿Cuantos numeros hay entre cada entero de misNum (entre -5 y -4, entre -4 y -3, entre -3 y -2, … entre 4 y 5 ; usar table())?
  • ¿Cual es el interval de confidencia a 90%?
  • ¿Cual es el interval de confidencia a 90% teorico bajo una ley Normal(0, 1)?

Manipular datos

¿Cuantos numeros hay entre [2 y 3[?

length(misNum[misNum >= 2 & misNum < 3])
## [1] 2138

Manipular datos

¿Cuantos numeros hay entre cada entero de misNum (entre -5 y -4, entre -4 y -3, entre -3 y -2, … entre 4 y 5 ; usar table())?

table(floor(misNum))
## 
##    -5    -4    -3    -2    -1     0     1     2     3     4 
##     3   130  2132 13677 34095 33963 13728  2138   132     2

Manipular datos

¿Cual es el interval de confidencia a 90%?

quantile(misNum, probs = c(0.05, 0.95))
##        5%       95% 
## -1.652974  1.649952

Manipular datos

¿Cual es el interval de confidencia a 90% teorico bajo una ley Normal(0, 1)?

qnorm(
  p = c(0.05, 0.95), 
  mean = 0, sd = 1
)
## [1] -1.644854  1.644854

Manipular datos (3)

Manipular datos

  • misNum <- rnorm(100000, mean = 0, sd = 1)
  • Crear un nuevo vector con 100 000 letras llamado misLetras (usar sample()) y un data.frame con misNum y misLetras como columnas (miDf).
  • Calcular el promedio de misNum para cada letra.
  • ¿Cuantos numeros hay para cada letra?
  • ¿Cual es el rango de numeros para cada letra?

Manipular datos

Crear un nuevo vector con 100 000 letras llamado misLetras (usar sample()) y un data.frame con misNum y misLetras como columnas (miDf).

misLetras <- sample(letters, size = 100000, replace = TRUE)
miDf <- data.frame(misNum, misLetras)

Manipular datos

Calcular el promedio de misNum para cada letra.

aggregate(miDf$misNum,  by = list(miDf$misLetras), FUN = mean)
##    Group.1             x
## 1        a -0.0006196318
## 2        b  0.0165829417
## 3        c -0.0016463002
## 4        d -0.0121480316
## 5        e -0.0181509253
## 6        f -0.0058898935
## 7        g  0.0078599881
## 8        h -0.0169477220
## 9        i  0.0249675919
## 10       j  0.0012699134
## 11       k -0.0142482902
## 12       l -0.0278980688
## 13       m -0.0043007300
## 14       n -0.0006909142
## 15       o -0.0105502038
## 16       p  0.0197139563
## 17       q  0.0261745174
## 18       r -0.0079005367
## 19       s  0.0162613234
## 20       t -0.0001199887
## 21       u  0.0104254292
## 22       v  0.0047413220
## 23       w -0.0021884209
## 24       x -0.0051837733
## 25       y  0.0028186698
## 26       z  0.0099058666

Manipular datos

¿Cuantos numeros hay para cada letra?

aggregate(miDf$misNum,  by = list(miDf$misLetras), FUN = length)
##    Group.1    x
## 1        a 3750
## 2        b 3799
## 3        c 3840
## 4        d 3839
## 5        e 3929
## 6        f 3937
## 7        g 3830
## 8        h 3801
## 9        i 3768
## 10       j 3849
## 11       k 3870
## 12       l 3703
## 13       m 3815
## 14       n 3957
## 15       o 3731
## 16       p 3827
## 17       q 3875
## 18       r 3986
## 19       s 3860
## 20       t 3878
## 21       u 3830
## 22       v 3783
## 23       w 3779
## 24       x 3910
## 25       y 3989
## 26       z 3865

Manipular datos

¿Cual es el rango de numeros para cada letra?

aggregate(miDf$misNum,  by = list(miDf$misLetras), FUN = range)
##    Group.1       x.1       x.2
## 1        a -3.476953  4.153580
## 2        b -3.480537  3.849337
## 3        c -3.604046  3.228835
## 4        d -3.489230  3.953518
## 5        e -3.517409  3.703218
## 6        f -3.817620  3.847753
## 7        g -3.712904  3.952292
## 8        h -3.681966  3.760647
## 9        i -3.464733  4.037886
## 10       j -3.317213  3.193645
## 11       k -3.362273  3.897365
## 12       l -4.083559  3.630781
## 13       m -3.480988  3.631225
## 14       n -3.155007  3.240256
## 15       o -3.626668  3.412308
## 16       p -3.133583  3.485895
## 17       q -3.525576  3.512402
## 18       r -4.040720  3.616589
## 19       s -3.452866  3.646595
## 20       t -3.213081  3.388417
## 21       u -3.450852  3.513715
## 22       v -4.159130  3.408873
## 23       w -3.700402  3.351932
## 24       x -3.537288  3.309570
## 25       y -3.540166  3.797563
## 26       z -3.450919  3.663754

Caso concreto devRate

Respuesta de los insectos a la temperatura

Cargar el paquete devRate con:

library("devRate")

Si no fue instalado, usar:

install.packages("devRate")
library("devRate")

Respuesta de los insectos a la temperatura

Cargar la base de datos de la respuesta de los insectos a la temperatura. Aqui tenemos los parametros de una regresion lineal de la tasa de desarrollo en funcion de la temperatura para varios artropodos (insectos y unos otros).

rT ~ aa + bb * T

bdd <- campbell_74$startVal

devRate = f(temp)

str(bdd)
## 'data.frame':    1785 obs. of  9 variables:
##  $ ordersp : Factor w/ 15 levels "Acari","Blattodea",..: 9 9 9 9 3 3 9 9 9 9 ...
##  $ familysp: Factor w/ 121 levels "Acaridae","Acrididae",..: 116 116 116 116 105 105 86 86 86 116 ...
##  $ genussp : Factor w/ 463 levels "Abgrallaspis",..: 140 140 140 140 151 151 149 149 149 264 ...
##  $ species : Factor w/ 681 levels "abdominalis",..: 470 470 470 470 471 471 400 400 400 66 ...
##  $ genSp   : Factor w/ 744 levels "Abgrallaspis cyanophylli",..: 240 240 240 240 257 257 254 254 254 427 ...
##  $ stage   : Factor w/ 22 levels "all","eggs","eggs+larva",..: 2 13 19 1 9 10 1 17 19 2 ...
##  $ param.aa: num  -0.1339 -0.0301 -0.0459 -0.0165 -0.1095 ...
##  $ param.bb: num  0.013 0.0033 0.0044 0.0017 0.01 ...
##  $ ref     : Factor w/ 34 levels "Aghdam et al. 2009",..: 1 1 1 1 3 3 4 4 4 5 ...

Caso concreto devRate

devRate = f(temp)

  • ¿Cuantas especies hay en la base?
  • ¿Cuantas especies estan en el Orden Lepidoptera?
  • ¿Cuantas entradas hay en la base para cada Orden?
  • ¿Cuantas especies unicas hay para cada Orden?

devRate = f(temp)

¿Cuantas especies hay en la base?

length(unique(bdd$genSp))
## [1] 744

devRate = f(temp)

¿Cuantas especies estan en el Orden Lepidoptera?

length(unique(bdd$genSp[bdd$ordersp == "Lepidoptera"]))
## [1] 141

devRate = f(temp)

¿Cuantas entradas hay en la base para cada Orden?

table(bdd$ordersp)
## 
##        Acari    Blattodea   Coleoptera   Dermaptera      Diptera 
##           67            8          265            1          198 
##    Hemiptera    Homoptera  Hymenoptera  Lepidoptera Mesostigmata 
##          119          229          389          414            6 
##   Neuroptera   Orthoptera   Psocoptera Siphonaptera Thysanoptera 
##           27            6            5           10           41

devRate = f(temp)

¿Cuantas especies unicas hay para cada Orden?

bddGenSpp <- data.frame(ordersp = bdd$ordersp, genSp = bdd$genSp)
table(unique(bddGenSpp)$ordersp)
## 
##        Acari    Blattodea   Coleoptera   Dermaptera      Diptera 
##           30            1          129            1           90 
##    Hemiptera    Homoptera  Hymenoptera  Lepidoptera Mesostigmata 
##           66           84          160          141            5 
##   Neuroptera   Orthoptera   Psocoptera Siphonaptera Thysanoptera 
##           16            4            2            3           16

Caso concreto devRate

devRate = f(temp)

  • ¿Cual es el valor promedio de la temperatura base “-aa/bb” ?
  • ¿Cual es el valor promedio, mediano, min, max, y quartiles de la temperatura base “-aa/bb”?
  • ¿Cual es el valor promedio de la temperatura base “-aa/bb” para el Orden Lepidoptera?
  • ¿Cual es el valor promedio de la temperatura base “-aa/bb” para todos los Ordenes?

devRate = f(temp)

¿Cual es el valor promedio de la temperatura base “-aa/bb” ?

mean(-bdd$param.aa / bdd$param.bb)
## [1] 9.918518

devRate = f(temp)

¿Cual es el valor promedio, mediano, min, max, y quartiles de la temperatura base “-aa/bb”?

summary(-bdd$param.aa / bdd$param.bb)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## -23.180   7.400  10.100   9.919  12.200  64.625

devRate = f(temp)

¿Cual es el valor promedio de la temperatura base “-aa/bb” para el Orden Lepidoptera?

mean(-bdd$param.aa[bdd$ordersp == "Lepidoptera"] / 
  bdd$param.bb[bdd$ordersp == "Lepidoptera"])
## [1] 9.895942

devRate = f(temp)

¿Cual es el valor promedio de la temperatura base “-aa/bb” para todos los Ordenes?

aggregate((-bdd$param.aa / bdd$param.bb), by = list(bdd$ordersp), FUN = mean)
##         Group.1         x
## 1         Acari 10.352687
## 2     Blattodea 12.150004
## 3    Coleoptera 12.907985
## 4    Dermaptera 16.900002
## 5       Diptera  8.985736
## 6     Hemiptera 11.045105
## 7     Homoptera  6.703930
## 8   Hymenoptera  9.888240
## 9   Lepidoptera  9.895942
## 10 Mesostigmata 10.071667
## 11   Neuroptera  9.910741
## 12   Orthoptera 18.550000
## 13   Psocoptera 11.533999
## 14 Siphonaptera 12.410000
## 15 Thysanoptera  6.900732