1 Autor

Autor: Álvaro Alonso Fernández
Departamento de Ciencias de la Vida
Universidad de Alcalá (España)
Utilizaremos el paquete de R GGPLOT2. Las posibilidades son infinitas


2 Nuestros datos

Nuestro objetivo es construir un gráfico que muestre la velocidad de diferentes individuos a lo largo del tiempo. La variable velocidad se mostrará en el eje y y el tiempo en el eje x. Tenemos una matriz de datos con cuatro individuos y la velocidad de cada individuo en diferentes tiempos (en horas)

Cargamos nuestra matriz de datos, que tendrá el siguiente aspecto:

setwd(dir = "F:/R/MARKDOWN-ggplot2/graphggplot2/")
datos<-read.table("timevelocity.csv", sep = ";", header = TRUE, dec = ".")
datos
##    hours Individual1 Individual2 Individual3 Individual4
## 1      0          30          12         100          10
## 2      1          24          12          99          20
## 3     24          29          15          98          25
## 4     25          34          21          89          36
## 5     48          33          23          96          68
## 6     49          39          22          56          69
## 7     72          41          26          68          75
## 8     74          39          34          98          78
## 9     96          29          35          98         101
## 10    98          45          36          97         102
## 11   112          41          41          98         100
## 12   124          42          39          97         103
## 13   128          46          45         100          10
## 14   135          45          46          99          20
## 15   139          57          48          98         102
## 16   165          42          49          86         102
## 17   167          35          49          85          68
## 18   169          39          50          84         120
## 19   175          36          52          82          75
## 20   179          23          56          83          78
## 21   180          29          55          80         101
## 22   185          27          59          75         102
## 23   186          42          49          77         100
## 24   199          42          56          70         103
## 25   200          34          51          72         101
## 26   202          33          59          75         102
## 27   203          39          62          98         115
## 28   205          41          66          86         114
## 29   210          34          69          89         125
## 30   212          41          75          95         136
## 31   219          33          77          94         122
## 32   222          22          74          92         102
## 33   225          20          79          86         109
## 34   235          33          89         101         105
## 35   236          34          95         102         101
## 36   239          41          94          99         102
## 37   245          33          99          89          88
## 38   255          34          99          79          89
## 39   256          33          98          96          85
## 40   266          39          97          86          99
## 41   268          41          97         101         101
## 42   269          26          98         102         102
## 43   274          20          95         110          99
## 44   279          25          91          99          98
## 45   280          24          94          98          95
str(datos)
## 'data.frame':    45 obs. of  5 variables:
##  $ hours      : int  0 1 24 25 48 49 72 74 96 98 ...
##  $ Individual1: int  30 24 29 34 33 39 41 39 29 45 ...
##  $ Individual2: int  12 12 15 21 23 22 26 34 35 36 ...
##  $ Individual3: int  100 99 98 89 96 56 68 98 98 97 ...
##  $ Individual4: int  10 20 25 36 68 69 75 78 101 102 ...

3 Serie temporal para un individuo

Cargamos el paquete ggplot2 con library y creamos el gráfico con ggplot. Le indicamos nuestros datos, y con aes que variables mostrará en el eje x y en el y.

library(ggplot2)


gr1<- ggplot(datos, aes(x=hours, y=Individual1)) +
  geom_line()
gr1

Podemos cambiar los rótulos de los ejes x e y. Ahora simplemente al objeto con la figura (gr1) le sumamos xlabe ylab.

gr1+xlab("Hours") +
  ylab("Velocity")

4 Serie temporal para un individuo con tendencia

Con stat_smooth añadimos en este caso un modelo de tendencia libre con sus límites de confianza.

gr1+xlab("Hours") +
  ylab("Velocity")+
  stat_smooth(color = "#FC4E08", fill = "#FC4E07",
                method = "loess")
## `geom_smooth()` using formula 'y ~ x'

5 Serie temporal para dos individuos

5.1 Preparamos los datos

Vamos a utilizar la función gather para cambiar nuestra matriz de datos. En este caso crearemos una variable con la velocidad, otra con un indicador de cada individuo (el 1 y el 2) y otra con el tiempo:

library(tidyr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
datosnew <- datos %>%
  select(hours, Individual1, Individual2) %>%
  gather(key = "twoindividuals", value = "velocity2", -hours)
head(df, 3)
##                                            
## 1 function (x, df1, df2, ncp, log = FALSE) 
## 2 {                                        
## 3     if (missing(ncp))
datosnew
##    hours twoindividuals velocity2
## 1      0    Individual1        30
## 2      1    Individual1        24
## 3     24    Individual1        29
## 4     25    Individual1        34
## 5     48    Individual1        33
## 6     49    Individual1        39
## 7     72    Individual1        41
## 8     74    Individual1        39
## 9     96    Individual1        29
## 10    98    Individual1        45
## 11   112    Individual1        41
## 12   124    Individual1        42
## 13   128    Individual1        46
## 14   135    Individual1        45
## 15   139    Individual1        57
## 16   165    Individual1        42
## 17   167    Individual1        35
## 18   169    Individual1        39
## 19   175    Individual1        36
## 20   179    Individual1        23
## 21   180    Individual1        29
## 22   185    Individual1        27
## 23   186    Individual1        42
## 24   199    Individual1        42
## 25   200    Individual1        34
## 26   202    Individual1        33
## 27   203    Individual1        39
## 28   205    Individual1        41
## 29   210    Individual1        34
## 30   212    Individual1        41
## 31   219    Individual1        33
## 32   222    Individual1        22
## 33   225    Individual1        20
## 34   235    Individual1        33
## 35   236    Individual1        34
## 36   239    Individual1        41
## 37   245    Individual1        33
## 38   255    Individual1        34
## 39   256    Individual1        33
## 40   266    Individual1        39
## 41   268    Individual1        41
## 42   269    Individual1        26
## 43   274    Individual1        20
## 44   279    Individual1        25
## 45   280    Individual1        24
## 46     0    Individual2        12
## 47     1    Individual2        12
## 48    24    Individual2        15
## 49    25    Individual2        21
## 50    48    Individual2        23
## 51    49    Individual2        22
## 52    72    Individual2        26
## 53    74    Individual2        34
## 54    96    Individual2        35
## 55    98    Individual2        36
## 56   112    Individual2        41
## 57   124    Individual2        39
## 58   128    Individual2        45
## 59   135    Individual2        46
## 60   139    Individual2        48
## 61   165    Individual2        49
## 62   167    Individual2        49
## 63   169    Individual2        50
## 64   175    Individual2        52
## 65   179    Individual2        56
## 66   180    Individual2        55
## 67   185    Individual2        59
## 68   186    Individual2        49
## 69   199    Individual2        56
## 70   200    Individual2        51
## 71   202    Individual2        59
## 72   203    Individual2        62
## 73   205    Individual2        66
## 74   210    Individual2        69
## 75   212    Individual2        75
## 76   219    Individual2        77
## 77   222    Individual2        74
## 78   225    Individual2        79
## 79   235    Individual2        89
## 80   236    Individual2        95
## 81   239    Individual2        94
## 82   245    Individual2        99
## 83   255    Individual2        99
## 84   256    Individual2        98
## 85   266    Individual2        97
## 86   268    Individual2        97
## 87   269    Individual2        98
## 88   274    Individual2        95
## 89   279    Individual2        91
## 90   280    Individual2        94

5.2 Creamos la figura

Creamos la figura sencilla. Cada individuo de un color diferente:

ggplot(datosnew, aes(x = hours, y = velocity2)) + 
  geom_line(aes(color = twoindividuals), size = 1) +
  scale_color_manual(values = c("red", "blue")) +
  theme_minimal()+
  xlab("Hours") +
  ylab("Velocity")

5.3 Representamos el área debajo de cada línea de tendencia

Cambiamos geom_linepor geom_areas:

gr2<-ggplot(datosnew, aes(x = hours, y = velocity2)) + 
  geom_area(aes(color = twoindividuals, fill = twoindividuals), 
            alpha = 0.5, position = position_dodge(0.8)) +
  scale_color_manual(values = c("red", "blue")) +
  theme_minimal()+
  xlab("Hours") +
  ylab("Velocity")

gr2

5.4 Modelo lineal para la tendencia global

Añdimos un modelo lineal para los dos individuos juntos por medio de stat_smooth indicando el modelo lm:

gr2+stat_smooth(method = "lm", formula = y ~ x, se = TRUE)

5.5 Modelo lineal para las tendencias individuales

Añadimos un modelo lineal para cada uno de los individuos por medio de stst_smooth indicando el modelo lm pero indicando en aesel color con el factor twoindividuals:

gr3<-ggplot(datosnew, aes(hours, velocity2, colour =twoindividuals )) +
  geom_point() +
  geom_smooth(method = "lm", formula = y ~ x, se = TRUE)  
gr3  

5.6 Modelo libre para las tendencias individuales

Añadimos un modelo libre para cada uno de los individuos por medio de stst_smooth no indicando nada en geom_smooth:

gr4<-ggplot(datosnew, aes(hours, velocity2, colour =twoindividuals )) +
  geom_point() +
  geom_smooth()  
gr4  
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

#Rótulos
gr4+ xlab("Hours") +
  ylab("Velocity")
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

6 Serie temporal para cuatro individuos

6.1 Preparamos los datos

Repetimos el paso indicado anteriormente, transformando una nueva matriz con los cuatro individuos en una misma columna (velocidades, indicador de individuo e indicador del tiempo):

library(tidyr)
library(dplyr)
datosnew2 <- datos %>%
  select(hours, Individual1, Individual2,Individual3,Individual4) %>%
  gather(key = "twoindividuals", value = "velocity2", -hours)
head(df, 3)
##                                            
## 1 function (x, df1, df2, ncp, log = FALSE) 
## 2 {                                        
## 3     if (missing(ncp))
datosnew2
##     hours twoindividuals velocity2
## 1       0    Individual1        30
## 2       1    Individual1        24
## 3      24    Individual1        29
## 4      25    Individual1        34
## 5      48    Individual1        33
## 6      49    Individual1        39
## 7      72    Individual1        41
## 8      74    Individual1        39
## 9      96    Individual1        29
## 10     98    Individual1        45
## 11    112    Individual1        41
## 12    124    Individual1        42
## 13    128    Individual1        46
## 14    135    Individual1        45
## 15    139    Individual1        57
## 16    165    Individual1        42
## 17    167    Individual1        35
## 18    169    Individual1        39
## 19    175    Individual1        36
## 20    179    Individual1        23
## 21    180    Individual1        29
## 22    185    Individual1        27
## 23    186    Individual1        42
## 24    199    Individual1        42
## 25    200    Individual1        34
## 26    202    Individual1        33
## 27    203    Individual1        39
## 28    205    Individual1        41
## 29    210    Individual1        34
## 30    212    Individual1        41
## 31    219    Individual1        33
## 32    222    Individual1        22
## 33    225    Individual1        20
## 34    235    Individual1        33
## 35    236    Individual1        34
## 36    239    Individual1        41
## 37    245    Individual1        33
## 38    255    Individual1        34
## 39    256    Individual1        33
## 40    266    Individual1        39
## 41    268    Individual1        41
## 42    269    Individual1        26
## 43    274    Individual1        20
## 44    279    Individual1        25
## 45    280    Individual1        24
## 46      0    Individual2        12
## 47      1    Individual2        12
## 48     24    Individual2        15
## 49     25    Individual2        21
## 50     48    Individual2        23
## 51     49    Individual2        22
## 52     72    Individual2        26
## 53     74    Individual2        34
## 54     96    Individual2        35
## 55     98    Individual2        36
## 56    112    Individual2        41
## 57    124    Individual2        39
## 58    128    Individual2        45
## 59    135    Individual2        46
## 60    139    Individual2        48
## 61    165    Individual2        49
## 62    167    Individual2        49
## 63    169    Individual2        50
## 64    175    Individual2        52
## 65    179    Individual2        56
## 66    180    Individual2        55
## 67    185    Individual2        59
## 68    186    Individual2        49
## 69    199    Individual2        56
## 70    200    Individual2        51
## 71    202    Individual2        59
## 72    203    Individual2        62
## 73    205    Individual2        66
## 74    210    Individual2        69
## 75    212    Individual2        75
## 76    219    Individual2        77
## 77    222    Individual2        74
## 78    225    Individual2        79
## 79    235    Individual2        89
## 80    236    Individual2        95
## 81    239    Individual2        94
## 82    245    Individual2        99
## 83    255    Individual2        99
## 84    256    Individual2        98
## 85    266    Individual2        97
## 86    268    Individual2        97
## 87    269    Individual2        98
## 88    274    Individual2        95
## 89    279    Individual2        91
## 90    280    Individual2        94
## 91      0    Individual3       100
## 92      1    Individual3        99
## 93     24    Individual3        98
## 94     25    Individual3        89
## 95     48    Individual3        96
## 96     49    Individual3        56
## 97     72    Individual3        68
## 98     74    Individual3        98
## 99     96    Individual3        98
## 100    98    Individual3        97
## 101   112    Individual3        98
## 102   124    Individual3        97
## 103   128    Individual3       100
## 104   135    Individual3        99
## 105   139    Individual3        98
## 106   165    Individual3        86
## 107   167    Individual3        85
## 108   169    Individual3        84
## 109   175    Individual3        82
## 110   179    Individual3        83
## 111   180    Individual3        80
## 112   185    Individual3        75
## 113   186    Individual3        77
## 114   199    Individual3        70
## 115   200    Individual3        72
## 116   202    Individual3        75
## 117   203    Individual3        98
## 118   205    Individual3        86
## 119   210    Individual3        89
## 120   212    Individual3        95
## 121   219    Individual3        94
## 122   222    Individual3        92
## 123   225    Individual3        86
## 124   235    Individual3       101
## 125   236    Individual3       102
## 126   239    Individual3        99
## 127   245    Individual3        89
## 128   255    Individual3        79
## 129   256    Individual3        96
## 130   266    Individual3        86
## 131   268    Individual3       101
## 132   269    Individual3       102
## 133   274    Individual3       110
## 134   279    Individual3        99
## 135   280    Individual3        98
## 136     0    Individual4        10
## 137     1    Individual4        20
## 138    24    Individual4        25
## 139    25    Individual4        36
## 140    48    Individual4        68
## 141    49    Individual4        69
## 142    72    Individual4        75
## 143    74    Individual4        78
## 144    96    Individual4       101
## 145    98    Individual4       102
## 146   112    Individual4       100
## 147   124    Individual4       103
## 148   128    Individual4        10
## 149   135    Individual4        20
## 150   139    Individual4       102
## 151   165    Individual4       102
## 152   167    Individual4        68
## 153   169    Individual4       120
## 154   175    Individual4        75
## 155   179    Individual4        78
## 156   180    Individual4       101
## 157   185    Individual4       102
## 158   186    Individual4       100
## 159   199    Individual4       103
## 160   200    Individual4       101
## 161   202    Individual4       102
## 162   203    Individual4       115
## 163   205    Individual4       114
## 164   210    Individual4       125
## 165   212    Individual4       136
## 166   219    Individual4       122
## 167   222    Individual4       102
## 168   225    Individual4       109
## 169   235    Individual4       105
## 170   236    Individual4       101
## 171   239    Individual4       102
## 172   245    Individual4        88
## 173   255    Individual4        89
## 174   256    Individual4        85
## 175   266    Individual4        99
## 176   268    Individual4       101
## 177   269    Individual4       102
## 178   274    Individual4        99
## 179   279    Individual4        98
## 180   280    Individual4        95

6.2 Representamos la serie temporal

Y ahora representamos la figura:

gr5<-ggplot(datosnew2, aes(hours, velocity2, colour =twoindividuals )) +
  geom_point() +
  geom_smooth() +#modelo libre
  xlab("Hours") +#rótulos eje x e y
  ylab("Velocity") 
gr5
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

6.3 Incluimos las tendencias

Cambiamos a un modelo lineal para cada uno de los individuos:

gr6<-ggplot(datosnew2, aes(hours, velocity2, colour =twoindividuals )) +
  geom_point() +
  geom_smooth(method = "lm", formula = y ~ x, se = TRUE)+#modelo lineal
  xlab("Hours") +
  ylab("Velocity")
gr6  

7 Serie temporal para la media y la desviación

Ahora representaremos la media de los cuatro individuos para cada tiempo. Para ello calcularemos primero los valores a representar con la función summarySEaplicando a la variable de la velocidad agrupada por el tiempo. Se requiere el paquete Rmisc:

library(Rmisc)
## Loading required package: lattice
## Loading required package: plyr
## ------------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## ------------------------------------------------------------------------------
## 
## Attaching package: 'plyr'
## The following objects are masked from 'package:dplyr':
## 
##     arrange, count, desc, failwith, id, mutate, rename, summarise,
##     summarize
nuevos <- summarySE(datosnew2, measurevar="velocity2", groupvars=c("hours"))
nuevos
##    hours N velocity2       sd       se       ci
## 1      0 4     38.00 42.30051 21.15026 67.30955
## 2      1 4     38.75 40.47530 20.23765 64.40524
## 3     24 4     41.75 37.95941 18.97970 60.40189
## 4     25 4     45.00 30.07768 15.03884 47.86030
## 5     48 4     55.00 33.45644 16.72822 53.23666
## 6     49 4     46.50 20.43689 10.21845 32.51966
## 7     72 4     52.50 22.95648 11.47824 36.52888
## 8     74 4     62.25 30.90173 15.45086 49.17154
## 9     96 4     65.75 39.06725 19.53362 62.16471
## 10    98 4     70.00 34.32200 17.16100 54.61397
## 11   112 4     70.00 33.49627 16.74813 53.30004
## 12   124 4     70.25 34.46133 17.23067 54.83567
## 13   128 4     50.25 37.15172 18.57586 59.11667
## 14   135 4     52.50 33.25157 16.62578 52.91066
## 15   139 4     76.25 27.71732 13.85866 44.10445
## 16   165 4     69.75 28.89492 14.44746 45.97827
## 17   167 4     59.25 21.85368 10.92684 34.77408
## 18   169 4     73.25 36.58210 18.29105 58.21028
## 19   175 4     61.25 21.15617 10.57808 33.66418
## 20   179 4     60.00 27.31300 13.65650 43.46108
## 21   180 4     66.25 31.14884 15.57442 49.56475
## 22   185 4     65.75 31.34087 15.67043 49.87031
## 23   186 4     67.00 26.69582 13.34791 42.47900
## 24   199 4     67.75 26.13267 13.06634 41.58292
## 25   200 4     64.50 28.87329 14.43664 45.94384
## 26   202 4     67.25 28.91799 14.45899 46.01497
## 27   203 4     78.50 34.37538 17.18769 54.69890
## 28   205 4     76.75 30.91251 15.45626 49.18870
## 29   210 4     79.25 38.03836 19.01918 60.52752
## 30   212 4     86.75 39.68522 19.84261 63.14804
## 31   219 4     81.50 37.27823 18.63912 59.31799
## 32   222 4     72.50 35.60431 17.80215 56.65440
## 33   225 4     73.50 37.89899 18.94949 60.30575
## 34   235 4     82.00 33.36665 16.68333 53.09379
## 35   236 4     83.00 32.81260 16.40630 52.21217
## 36   239 4     84.00 28.85596 14.42798 45.91628
## 37   245 4     77.25 29.91516 14.95758 47.60169
## 38   255 4     75.25 28.68652 14.34326 45.64666
## 39   256 4     78.00 30.53959 15.26980 48.59531
## 40   266 4     80.25 28.08766 14.04383 44.69374
## 41   268 4     85.00 29.39388 14.69694 46.77222
## 42   269 4     82.00 37.38092 18.69046 59.48139
## 43   274 4     81.00 41.15823 20.57912 65.49193
## 44   279 4     78.25 35.67796 17.83898 56.77159
## 45   280 4     77.75 35.87362 17.93681 57.08294

Ahora representamos la media y el SE. Para ello hay que utilizar la función geom_errorbar e indicarle el valor máximo y mínimo a representar. En este caso sería la velocidad+SE y la velocidad-SE

gr7<-ggplot(nuevos, aes(x=hours, y=velocity2)) + 
  geom_errorbar(aes(ymin=velocity2-se, ymax=velocity2+se), width=.1) +
    geom_point()
gr7

Se pueden unir las observaciones con líneas:

gr7+geom_line()

Le añadimos modelo lineal y el libre:

gr7+
  geom_smooth()#modelo libre
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

gr7+
  geom_smooth(method = "lm", formula = y ~ x, se = TRUE)

8 Serie temporal de media, SE y tres tratamientos distintos

Cargamos nuestra matriz de datos, que tendrá el siguiente aspecto:

setwd(dir = "F:/R/MARKDOWN-ggplot2/graphggplot2/")
datos2<-read.table("timevelocityfactor.csv", sep = ";", header = TRUE, dec = ".")
datos2
##    Time Factor meanvelocity  SE
## 1     1      A           10 1.0
## 2     2      A           11 2.0
## 3     3      A           12 3.0
## 4     4      A           15 2.0
## 5     5      A           16 1.0
## 6     6      A           14 3.0
## 7     7      A           14 4.0
## 8     8      A           15 2.0
## 9     9      A           13 2.0
## 10   10      A           11 1.0
## 11   11      A           10 3.0
## 12   12      A            9 2.0
## 13   13      A           11 1.0
## 14   14      A           12 3.0
## 15   15      A           13 3.0
## 16   16      A           10 5.0
## 17   17      A            9 0.5
## 18   18      A           11 0.1
## 19   19      A           11 2.0
## 20   20      A           10 3.0
## 21    1      B           19 1.0
## 22    2      B           18 1.0
## 23    3      B           16 2.0
## 24    4      B           17 3.0
## 25    5      B           19 4.0
## 26    6      B           15 3.0
## 27    7      B           18 2.0
## 28    8      B           16 3.0
## 29    9      B           19 2.0
## 30   10      B           19 1.0
## 31   11      B           18 3.0
## 32   12      B           15 2.0
## 33   13      B           14 1.0
## 34   14      B           16 3.0
## 35   15      B           15 3.0
## 36   16      B           12 5.0
## 37   17      B           11 0.5
## 38   18      B           10 3.0
## 39   19      B            8 2.0
## 40   20      B            7 1.0
## 41    1      C            5 3.0
## 42    2      C            3 3.0
## 43    3      C            5 2.0
## 44    4      C            9 2.0
## 45    5      C           10 3.0
## 46    6      C           15 1.0
## 47    7      C           19 4.0
## 48    8      C           21 5.0
## 49    9      C           22 3.0
## 50   10      C           26 1.0
## 51   11      C           25 3.0
## 52   12      C           28 2.0
## 53   13      C           29 1.0
## 54   14      C           35 3.0
## 55   15      C           34 5.0
## 56   16      C           33 0.5
## 57   17      C           36 3.0
## 58   18      C           39 2.0
## 59   19      C           41 1.0
## 60   20      C           50 3.0
str(datos2)
## 'data.frame':    60 obs. of  4 variables:
##  $ Time        : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Factor      : chr  "A" "A" "A" "A" ...
##  $ meanvelocity: int  10 11 12 15 16 14 14 15 13 11 ...
##  $ SE          : num  1 2 3 2 1 3 4 2 2 1 ...

Tenemos tres niveles de un factor (A,B y C), con 20 observaciones temporales de la media de velocidad y su SE.

Ahora los representamos:

gr8<-ggplot(datos2, aes(x=Time, y=meanvelocity, colour=Factor)) + 
  geom_errorbar(aes(ymin=meanvelocity-SE, ymax=meanvelocity+SE), width=.1) +
  geom_line() +
  geom_point()+
  xlab("Hours")+
  ylab("Velocity")
gr8

Completamos con modelo libre y lineal:

gr8+geom_smooth()#modelo libre
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

gr8+geom_smooth(method = "lm", formula = y ~ x, se = TRUE)

9 Conclusiones

Podemos representar una variable dependiente para varios individuos o niveles de un factor en función de observacioens realizadas en diferentes tiempos. Además, se pueden incluir modelos para resumir las tendencias observadas en nuestros datos, lo que nos permitirá hacernos una idea de por ejemplo cuál es el resultado de aplicar un determinado tratamiento sobre la variable estudiada. Las posibilidades son casi infinitas.

10 CRÉDITOS

Álvaro Alonso Fernández

Departamento de Ciencias de la Vida

Universidad de Alcalá (España)