MODELACION1

Meza

19/10/2021

Introduccion a R para modelacion ambiental

Instalar paquetes

library(pacman)
## Warning: package 'pacman' was built under R version 4.0.5
p_load("prettydoc", "DT", "xfun", "base64enc", "htmltools", "mime", "readr")

Caso de estudio # de efectividad de un fertilizante de plántulas de invernadero

Normalmente, para iniciar con la resolución de un problema se aplica el método científico. De acurdo con Risk (2003), éste es un proceso con el cual se investiga de forma sistemática las observaciones, se resuelven problemas y se prueban hipótesis. Como parte del método científico la propuesta de una hipótesis y luego su comprobación, son temas bien definidos, y a pesar de la incertidumbre asociada al problema es posible cuantificar el error de la conclusión planteada por la hipótesis.

Los pasos del método científico son:

  1. Plantear un problema a resolver.
  2. Colectar una serie de observaciones.
  3. Formular una o más hipótesis.
  4. Probar dichas hipótesis.
  5. Declarar las conclusiones.

Importar datos

plantas <- read_csv("plantas.csv")
## Rows: 42 Columns: 3
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (1): Tratamiento
## dbl (2): planta, IE
## 
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
datatable(plantas)

Un problema a resolver podría ser la importancia del efecto de las fertilizaciones de plántulas producidas en viveros forestales;

ya contamos con el paso 1 del método científico. Luego efectuamos observaciones en dos grupos de plántulas, uno control (Sin fertilización, llamados de aquí en adelante Control) y otro de plántulas fertilizadas con un complejo complejo N:P:K (denominados de aquí en adelante como Fertilizados). El tamaño de dichas muestras se basa en estudios similares ya publicados como por ejemplo Fraysse and Crémière (1998) y también es valido de acuerdo con la experiencia del investigador.

Uno de los indicadores más comunes que miden el efecto de la fertilización de una plántula es el Índice de esbeltez (IE). Dicho índice relaciona la altura y el diámetro del tallo y se define con la siguiente ecuación (Olivo and Buduba 2006)

\[ IE = \frac{\varnothing_{tallo}}{(h_{tallo}/10)+2} \]

El índice de Esbeltez (IE) alcanza valores máximos de 1.2 lo que indica que la plántulas tienen mayor probabilidad de éxito al llevarse a campo. Valores cercanos a 1 indica que la planta tendrá menos problemas en el establecimiento y valores por abajo de 0.5 son plántulas de mala calidad (Olivo and Buduba 2006).

Mediante la observación del cuadro y utilizando métodos de estadística descriptiva y representación gráfica (Fig. ), podríamos aventurarnos a decir que el IE en el tratamiento fertilizadas es más alto con respecto al grupo Control, a este punto es seguro plantear que el IE es distinto en lugar de mayor, aquí es donde formulamos la hipótesis:

##Estimacion de parametros descriptivos comparativos (EDA)

  • Para describir la diferencia entre Fert y Ctrl graficamente usaremos un grafico de caja y bigote
boxplot(plantas$IE ~  plantas$Tratamiento, col = "purple")

summary(plantas)
##      planta            IE         Tratamiento       
##  Min.   : 1.00   Min.   :0.5500   Length:42         
##  1st Qu.:11.25   1st Qu.:0.7025   Class :character  
##  Median :21.50   Median :0.7950   Mode  :character  
##  Mean   :21.50   Mean   :0.8371                     
##  3rd Qu.:31.75   3rd Qu.:0.9375                     
##  Max.   :42.00   Max.   :1.1600

Representación del comportamiento del IE mediante un boxplot

El Índice de Esbeltez (IE) en plántulas con fertilizante (Fert) es diferente con respecto a las plántulas del tratamiento (Ctrl).

La formulación de una hipótesis en el método científico se inicia definiendo la hipótesis nula (H0) y la hipótesis alternativa (H1)

; generalmente la H0 establece que no hay diferencias entre los grupos a compararse, en este caso Ctrl y el grupo Fert.

La hipótesis alternativa (H1) por otra parte, se indica como el complemento de la H0, por lo tanto H1 establecerá que si existen diferencias significativas entre los grupos en estudio (Zar 2010; A. Field, Miles, and Field 2012). Por lo tanto mediante procedimientos estadísticos que veremos en esta clase, se tratará rechazar nuestra hipótesis H0.

H0: IE Ctrl = IE Fert; H1= IE Ctrl ≠ IE Fert

Normalmente cuando se toma la decisión final sobre la hipótesis nula, surgen situaciones que nos pueden llegar a cometer diferentes errores. Así, una vez realizadas las técnicas para probar esta hipótesis, puede que lleguemos a la conclusión de que el enunciado de nuestra H0 no se rechace (acepta) o bien que sea falso y se rechace la H0. En esta situación puede que hayamos rechazado la H0 cuando en realidad era cierta, o que la evidencia colectada para nuestro análisis no haya sido suficiente para rechazarla siendo falsa (Risk 2003). Estas diferentes situaciones plantean la existencia de diferentes tipos de errores (Köhler, Schachtel, and Voleske 2007) que se muestran a continuación:

Analisis de distribucion y normalidad de los datos

Cómo sabemos si las diferencias son realmente representativas?

Antes de iniciar con el análisis y probar una hipótesis se debe determinar la distribución de las variables consideradas en la muestra. La importancia de verificar la normalidad de las muestras en un estudio es fundamental en estadística porque si las muestras son normales se pueden aplicar métodos estadísticos parámetricos, en el caso contrario se deben o bien transformar los datos o bien utilizar métodos no parámetricos (Risk 2003). El paso inicial entonces, es determinar si las variables en estudio pueden ser representadas por una distribución normal. Es decir, si las variables medidas en la muestra pueden ser descritas con parámetros de tendencia central y dispersión alrededor de dichos parámetros.

LA FORMA EN LA QUE SE DISTRIBUYEN LOS DATOS puede ser conocida por medio de tablas, histogramas y poligonos

Ctrl <- subset(plantas, Tratamiento == "Ctrl")
Fert <- subset(plantas, Tratamiento == "Fert")

*Histograma del IE de plantulas fertilizadas

hist(Fert$IE)

*Histogramadel IEE de plantulas control (blanco)

hist(Ctrl$IE)

# #Pruebas de normalidad

Son normales los datos ?

Prueba de normalidad de shapiro-wilk

shapiro.test(Fert$IE)
## 
##  Shapiro-Wilk normality test
## 
## data:  Fert$IE
## W = 0.95339, p-value = 0.3941
shapiro.test(Ctrl$IE)
## 
##  Shapiro-Wilk normality test
## 
## data:  Ctrl$IE
## W = 0.9532, p-value = 0.3908

Descarga este codigo y sus datos

xfun::embed_file("MODELACION1.Rmd")

Download MODELACION1.Rmd

Creando objeto

*Objeto numerico

mi_objeto <- 48
  • Cadena de texto
mi_objeto2 <- "R es útil"

Tutorial 1 (Instalación de R, etc)

Tutorial 2 (Calculos basicos)

#SUMAS
3+2
## [1] 5
#RESTAS
3-2
## [1] 1
4-4
## [1] 0
#MULTIPLICACIONES
3*2
## [1] 6
4*5
## [1] 20
#DIVISIONES
10/2
## [1] 5
#ELEVACIONES
3^2
## [1] 9
3^3
## [1] 27
3^7
## [1] 2187
2^(-3)
## [1] 0.125
100^(1/2)
## [1] 10
#RAICES
sqrt(100)
## [1] 10
pi
## [1] 3.141593
#EXPONENCIALES
exp(1)
## [1] 2.718282
#LOGARITMOS
log(exp(1))
## [1] 1
log10(1000)
## [1] 3
log2(8)
## [1] 3
log(16, base <- 4)
## [1] 2
#TRIGONOMETRICAS
sin(pi/2)
## [1] 1
cos(0)
## [1] 1
#EXPLICA QUE SIGNIFICA, LIBROS, ETC
?log
## starting httpd help server ... done
#INSTALAR PAQUETES O LIBRERIAS
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.0.5

Tutorial 3 (Tipo de datos y vectores)

Bienvenidos <- ("al tutorial de R")
typeof(Bienvenidos)
## [1] "character"
#NUMERIC
a <- 1.7
#tipo de datos o conocer la clas
class(a)
## [1] "numeric"
#pregunta si es numerico
is.numeric(a)
## [1] TRUE
is.numeric(Bienvenidos)
## [1] FALSE
#convertir a numerico
y <- as.numeric(a)

#INTEGER
b <- 1.34
class(b)
## [1] "numeric"
#convierte a numero entero
b1 <- as.integer(b)
#pregunta si es numero entero
is.integer(b1)
## [1] TRUE
class(b1)
## [1] "integer"
#COMPLEX (datos complejos (mezclan numeros imaginarios, normals, naturales))
c <- 3.5+4i
#pregunta si es un numero complejo
is.complex(c)
## [1] TRUE
is.complex(b1)
## [1] FALSE
class(c)
## [1] "complex"
#LOGICAL (operadores logicos)
logical <- T
logical
## [1] TRUE
l <- FALSE
class(l)
## [1] "logical"
#CHATACTER (palabras, caracteres)
str <- "programar en R" 
class(str)
## [1] "character"
is.character(str)
## [1] TRUE
numeros <- c(1, 2, 3, 4, 5)
numeros
## [1] 1 2 3 4 5
class(numeros)
## [1] "numeric"
#que tan largo es 
length(numeros)
## [1] 5
#posion de izquierda a derecha
numeros[3]
## [1] 3
numeros[5]
## [1] 5

Tutorial 4 (Estrucutra de datos, operaciones con vectores y logicas)

numvec <- c(2, 4, 6, 8, 10)
class(numvec)
## [1] "numeric"
length(numvec)
## [1] 5
#conocer el de esa posicion
numvec[3]
## [1] 6
mezcla <- c("rojo", 5)
mezcla
## [1] "rojo" "5"
class(mezcla)
## [1] "character"
mezcla <- c("rojo", 5, TRUE)
mezcla
## [1] "rojo" "5"    "TRUE"
#secuencia de datos
(e <- 1:100)
##   [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18
##  [19]  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36
##  [37]  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54
##  [55]  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72
##  [73]  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
##  [91]  91  92  93  94  95  96  97  98  99 100
#generar secuencias
seq(from <- 1.5, to <- 4.2, by <- 0.1)
##  [1] 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3
## [20] 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2
seq(1.5, 4.2, 0.1)
##  [1] 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3
## [20] 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2
seq(1.5, 4.2, 0.2)
##  [1] 1.5 1.7 1.9 2.1 2.3 2.5 2.7 2.9 3.1 3.3 3.5 3.7 3.9 4.1
#VECTORES (repetir)
rep("palabra", times <- 7)
## [1] "palabra" "palabra" "palabra" "palabra" "palabra" "palabra" "palabra"
c (e, rep (seq(1, 9, 2), 3), c(1, 2, 3), 42, 2:4)
##   [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18
##  [19]  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36
##  [37]  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54
##  [55]  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72
##  [73]  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
##  [91]  91  92  93  94  95  96  97  98  99 100   1   3   5   7   9   1   3   5
## [109]   7   9   1   3   5   7   9   1   2   3  42   2   3   4
z <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE)

f <- 1:10
f+1
##  [1]  2  3  4  5  6  7  8  9 10 11
2*f
##  [1]  2  4  6  8 10 12 14 16 18 20
2^f
##  [1]    2    4    8   16   32   64  128  256  512 1024
sqrt(f)
##  [1] 1.000000 1.414214 1.732051 2.000000 2.236068 2.449490 2.645751 2.828427
##  [9] 3.000000 3.162278
log(f)
##  [1] 0.0000000 0.6931472 1.0986123 1.3862944 1.6094379 1.7917595 1.9459101
##  [8] 2.0794415 2.1972246 2.3025851
g <- c(1, 3, 5, 7, 8, 9)
g>3
## [1] FALSE FALSE  TRUE  TRUE  TRUE  TRUE
g<3
## [1]  TRUE FALSE FALSE FALSE FALSE FALSE
g==3
## [1] FALSE  TRUE FALSE FALSE FALSE FALSE
g[g>3]
## [1] 5 7 8 9
g[g==8]
## [1] 8
sum(g>3)
## [1] 4
as.numeric(g>3)
## [1] 0 0 1 1 1 1
#determina la locacion del numero minimoo maximo de un vector numerico o logico
which(g>3)
## [1] 3 4 5 6
max(g)
## [1] 9
which(g==max(g))
## [1] 6

Tutorial 5 (Matrices)

#vector
h <- 1:9
h
## [1] 1 2 3 4 5 6 7 8 9
#matrices (componentes, filas y columnas)
H <- matrix(h, nrow = 3, ncol = 3)
H
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
#acomodados de manera horizontal en filas
i <- matrix(h, nrow = 3, ncol = 3, byrow = TRUE)
i
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## [3,]    7    8    9
#matriz con puros 0, que tenga 2 filas y 4 columnas
I <- matrix(0, 2, 4)
I
##      [,1] [,2] [,3] [,4]
## [1,]    0    0    0    0
## [2,]    0    0    0    0
#elegir un numero que este en la fila 1 y en la comuna 2
H[1, 2]
## [1] 4
H
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
H[1, ]
## [1] 1 4 7
H[, 2]
## [1] 4 5 6
H[2, c(1, 3)]
## [1] 2 8
H
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
#combinando columnas o filas
h <- 1:9
rev(h)
## [1] 9 8 7 6 5 4 3 2 1
rep(1, 9)
## [1] 1 1 1 1 1 1 1 1 1
#para filas es el comando "rbind"
rbind(h, rev(h), rep(1, 9,))
##   [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
## h    1    2    3    4    5    6    7    8    9
##      9    8    7    6    5    4    3    2    1
##      1    1    1    1    1    1    1    1    1
#para columnas es el comando "cbind"
cbind(col_1 <- h, col_2 <- rev(h), col_3 <- rep(1, 9))
##       [,1] [,2] [,3]
##  [1,]    1    9    1
##  [2,]    2    8    1
##  [3,]    3    7    1
##  [4,]    4    6    1
##  [5,]    5    5    1
##  [6,]    6    4    1
##  [7,]    7    3    1
##  [8,]    8    2    1
##  [9,]    9    1    1
#especificar argumentos
h <- 1:9
Y <- 9:1
h <- matrix(h, 3, 3)
h
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
Y <- matrix(Y, 3, 3)
Y
##      [,1] [,2] [,3]
## [1,]    9    6    3
## [2,]    8    5    2
## [3,]    7    4    1
#operaciones entre matrices
H+Y
##      [,1] [,2] [,3]
## [1,]   10   10   10
## [2,]   10   10   10
## [3,]   10   10   10
H-Y
##      [,1] [,2] [,3]
## [1,]   -8   -2    4
## [2,]   -6    0    6
## [3,]   -4    2    8
H*Y
##      [,1] [,2] [,3]
## [1,]    9   24   21
## [2,]   16   25   16
## [3,]   21   24    9
H/Y
##           [,1]      [,2]     [,3]
## [1,] 0.1111111 0.6666667 2.333333
## [2,] 0.2500000 1.0000000 4.000000
## [3,] 0.4285714 1.5000000 9.000000
H
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
Y
##      [,1] [,2] [,3]
## [1,]    9    6    3
## [2,]    8    5    2
## [3,]    7    4    1
#multiplicacion en matrices
H%*%Y
##      [,1] [,2] [,3]
## [1,]   90   54   18
## [2,]  114   69   24
## [3,]  138   84   30

Tutorial 6 (Estructura de datos, listas)

list(42, "rojo", TRUE, 2.5)
## [[1]]
## [1] 42
## 
## [[2]]
## [1] "rojo"
## 
## [[3]]
## [1] TRUE
## 
## [[4]]
## [1] 2.5
#sentenciado datos
ex_list <- list(
  a = c(1, 2, 3, 4),
  b = TRUE,
  c = "Azul",
  d = function(arg=42){print("Hola Mundo")},
  e = diag(5)
)
ex_list$a
## [1] 1 2 3 4
ex_list$b
## [1] TRUE
ex_list$e
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    0    0    0    0
## [2,]    0    1    0    0    0
## [3,]    0    0    1    0    0
## [4,]    0    0    0    1    0
## [5,]    0    0    0    0    1
ex_list$d
## function(arg=42){print("Hola Mundo")}
#los brackets sirvern para acceder a subconjuntos
ex_list[c("e","a")]
## $e
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    0    0    0    0
## [2,]    0    1    0    0    0
## [3,]    0    0    1    0    0
## [4,]    0    0    0    1    0
## [5,]    0    0    0    0    1
## 
## $a
## [1] 1 2 3 4
ex_list$d(arg = 1)
## [1] "Hola Mundo"

Tutorial 7 (Estructura de datos, Data Frame)

ex_data <- data.frame( D = c(1, 3, 5, 7, 9, 1, 3, 5, 7, 9),
                       V = c(rep("Viento",9), "Fuego"),
                       A = rep(c(TRUE, FALSE),5))
ex_data$D
##  [1] 1 3 5 7 9 1 3 5 7 9
ex_data$V
##  [1] "Viento" "Viento" "Viento" "Viento" "Viento" "Viento" "Viento" "Viento"
##  [9] "Viento" "Fuego"
ex_data$A
##  [1]  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE
#conocer la estructura str
str(ex_data)
## 'data.frame':    10 obs. of  3 variables:
##  $ D: num  1 3 5 7 9 1 3 5 7 9
##  $ V: chr  "Viento" "Viento" "Viento" "Viento" ...
##  $ A: logi  TRUE FALSE TRUE FALSE TRUE FALSE ...
#numero de filas
nrow(ex_data)
## [1] 10
#numero de columnas
ncol(ex_data)
## [1] 3
dim(ex_data)
## [1] 10  3
#activar biblioteca readr ( sirve para leer archivos de texto en arreglos rectangulares)

library(readr)
dato <- read.csv("ejemplo.csv")
dato
##   A     B           C
## 1 1  TRUE "Verdadero"
## 2 2 FALSE     "Falso"
dato$A
## [1] 1 2
dato$B
## [1]  TRUE FALSE
dato$C
## [1] "\"Verdadero\"" "\"Falso\""
library(readxl)
## Warning: package 'readxl' was built under R version 4.0.5
ejemplo <- read_excel("ejemplo.xlsx")
View(ejemplo)