set.seed(2020)
#aceite del cultivo de limonaria en cc de aceite
acc = rnorm(120,5,0.25)
histogram(acc,col= "darkred",ylim = c(0,40),main= "Distribucion del contenido de aceite", breaks=10)
#viscosidad (pascal/segundo )
vis = runif(120,2,3)
histogram(vis,col= "darkblue", ylim = c(0,20), main = "Distribucion de la viscosidad del aceite ", breaks=10)
# grafico dispersión
plot(acc, vis, pch = 19, cex =0.8, main = 'Contenido de aceite vs viscosidad', ylab = 'Viscosidad (Pascal/Seg)',
xlab = 'Contenido de aceite (CC)')
Los gráficos que presentan unidades diferentes en los ejes son muy engañosos.
Cambian los valores de los ejes, pero la dispersión se mantiene.
\[Z= \frac{x-\mu_x}{\sigma_x}\] ### Estandarización (Normalizar)
#funcion para estandarizacion
estand = function(x){
media = mean(x)
desv = sd(x)
z = (x-media)/desv
return(z)
}
#estandarizacion acc
acc_z= estand(acc)
#estandarizacion vis
vis_z= estand(vis)
par(mfrow = c(2,2))
hist(acc,main = "acc no estandarizado", breaks=10, col= "darkred")
hist(acc_z,main = "acc estandarizado", breaks=10, col= "darkblue")
hist(vis,main = "vis no estandarizado", breaks=10, col= "darkred")
hist(vis_z,main = "vis estandarizado", breaks=10, col= "darkblue")
Estandarizar > hace que la media de la variable sea 0
(med_acc = mean(acc)) # media sin estandarizar
## [1] 5.018748
(desv_acc = sd(acc)) # desviación sin estandarizar
## [1] 0.2785775
(med_acc_z = mean(acc_z)) # media estandarizada = 0
## [1] 1.254482e-15
(desv_acc_z = sd(acc_z)) # desviación estandarizada = 1
## [1] 1
(med_vis = mean(vis)) # media sin estandarizar
## [1] 2.478635
(desv_vis = sd(vis)) # desviación sin estandarizar
## [1] 0.2973342
(med_vis_z = mean(vis_z)) # media estandarizada = 0
## [1] 3.047367e-16
(desv_vis_z = sd(vis_z)) # desviación estandarizada = 1
## [1] 1
par(mfrow = c(1, 2))
plot(acc_z, vis_z, pch = 20, cex = 0.8, main = " Estandarizado")
points(x = mean(acc_z), y = mean(vis_z), col = "darkred", pch = 19)
plot(acc, vis, pch = 20, cex = 0.8, main = "No Estandarizado")
points(x = mean(acc), y = mean(vis), col = "darkblue", pch = 19)
### Correlación de Pearson entre aceite y viscosidad.
Es una medida de la asociación lineal entre un par de variables, cuando la correlación es 1 es una correlación perfecta, esto indica que una variable esta relacionada estadÃsticamente con la otra. Oscila entre -1 y 1. Datos originales
cr = cor(acc, vis, method = 'pearson')
cr
## [1] 0.02128085
Datos estandarizados
cr_z = cor(acc_z, vis_z, method = 'pearson')
cr_z
## [1] 0.02128085
# biomasa de tuberculos
set.seed(2020)
biom = sort(rnorm(48, 3, 0.25))
# tiempo de pesado de tuberculos (segundos)
tiempo = sort(rnorm(48, 30, 2))
plot(y = biom, x =tiempo, pch = 20, cex = 0.8)
corr = cor(biom, tiempo)
corr
## [1] 0.9609931
¿Tiene sentido en estudiar la relación la biomasa y lo que se tarde en pesar lo tubérculos? Algunas personas dirÃan que, a mayor peso o cantidad de tubérculos , mayor tiempo toma pesarlo. pero este tiempo puede verse afectado por muchos factores que no están estrictamente relacionado con la biomasa del tubérculo incluso ¿la biomasa depende del tiempo? esto nos lleva al segundo punto.
Según Descartes, en el eje Y debe ir la variable dependiente y en el eje X la variable independiente.
En nuestro caso deberÃamos reconsiderar nuestras variables en cuanto a su posición porque en nuestro caso el tiempo depende de la biomasa y no de forma inversa.
Esta correlacion puede ser engañosa.
# biomasa de niños al nacer
set.seed(2020)
peso = sort(rnorm(48, 3, 0.25))
# Numero de Cigüeñas contadas
num = sort(floor(rnorm(48, 30, 2)))
plot(x = peso, y = num, ylim = c(0, 36), xlim = c(0,36))
corr = cor(peso, num)
corr
## [1] 0.946424
Al invertir los ejes el grafico cambia pero su correlación se mantiene
set.seed(2020)
# N en el tejdio en ppm
N = sort(rnorm(120, 10, 0.8))
# P en el tejido en ppm
P = sort(rnorm(120, 0.1, 0.02))
plot(N, P, pch = 20, cex = 0.6)
Estandarizando
N_z = estand(N)
P_z = estand(P)
par(mfrow = c(1, 2))
plot(N, P, pch = 20, cex = 0.6, main = 'Sin estandarizar')
plot(N_z, P_z, pch = 20, cex = 0.6, xlim = c(-3, 3),
ylim = c(-3, 3), main = 'Estandarizado')
plot(N, P, pch = 20, cex = 0.6, main = 'Sin estandarizar',
xlim = c(0, 12), ylim = c(0, 12))
mod = lm(P~N) # regresión lineal
plot(N, P, pch = 20, cex = 0.6)
abline(mod) # recta que mejor se ajusta a los datos
##### Ecuación de la recta \[y = mx+b\]
| Â | Estimate | Std. Error | t value | Pr(>|t|) |
|---|---|---|---|---|
| (Intercept) | -0.1509 | 0.00273 | -55.3 | 3.202e-86 |
| N | 0.02478 | 0.0002703 | 91.69 | 1.573e-111 |
| Observations | Residual Std. Error | \(R^2\) | Adjusted \(R^2\) |
|---|---|---|---|
| 120 | 0.002629 | 0.9862 | 0.986 |
# coeficientes de la recta
b = -0.1509
m = 0.02478
# m es igual a la tangente teta
# tang 0 = 0.02478
# 0 = arctang(0.02478)
\[Pendiente~es~igual~a~tan(\theta)\]
\[tan(\theta) = Pendiente\]
\[\theta = arctan(pendiente)\]
ang_r = atan(m) # angulo de la recta en radianes
#ang_r
ang_g = ang_r*180/pi # angulo en grados
ang_g
## [1] 1.419499
library(readxl)
acacias<- read_excel("diseño 2.xlsx",
col_types = c("skip", "skip", "skip",
"skip", "text", "text", "skip", "skip",
"skip", "skip"))
head(acacias)
## # A tibble: 6 x 2
## Tmed RHUM
## <chr> <chr>
## 1 25.3 74.83
## 2 25.9 67.78
## 3 25.2 70.08
## 4 25.5 68.71
## 5 25.1 68.58
## 6 26.2 77.44
temp = acacias$Tmed<- as.numeric(acacias$Tmed)
Rhum = acacias$RHUM<- as.numeric(acacias$RHUM)
#funcion para estandarizacion
estand = function(x){
media = mean(x)
desv = sd(x)
z = (x-media)/desv
return(z)
}
temp_z = estand(temp)
Rhum_z = estand(Rhum)
par(mfrow = c(1, 2))
plot(temp, Rhum, pch = 20, cex = 0.3, main = 'Sin estandarizar')
plot(temp_z, Rhum_z, pch = 20, cex = 0.3, main = 'Estandarizado')
Como se puede observar el grafico no cambia después de la estandarización y refleja que a menor temperatura mayor humedad relativa lo cual es cierto dado que La cantidad de vapor de agua presente en el aire es mayor cuando hay la temperatura es baja.
Cuando decimos que el aire está muy seco lo que queremos decir es que contiene poco vapor de agua, es decir, que contiene poca humedad. En estas circunstancias es previsible pensar que se van a desarrollar pocas nubes. Por el contrario, si el aire contiene mucho vapor de agua, es decir, contiene mucha humedad, será frecuente que se desarrollen nubes, se forme niebla e incluso haya precipitación.
\[y(t)= \frac { \alpha * (t+t_{0})^{m} } { w_{0} + (t+t_{0})^{m} }\]
library(growthmodels)
growth<- blumberg(0:10, 10, 2, 0.5)
M1 = growth
# Calculate inverse function
M1.1<- blumberg.inverse(growth, 12, 2, 0.5)
par(mfrow= c(1,2),bg = "white", fg = "darkred", mar = c(2,2,2,2))
plot(M1 ,pch = 20, cex = 1.5, main = "Modelo Blumberg", xlab = "tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M1, lwd = 1)
plot(M1.1, pch = 20, cex = 1.5, main = "Modelo Blumberg inverso ", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M1.1, lwd = 1)
# Ejemplo de una correlacion en un modelo de crecimeinto Correlación de Pearson
cor_p = cor(M1, 0:10, method = "pearson")
cor_p
## [1] 0.8347271
Correlación de Spearman
cor_s = cor(M1, 0:10, method = "spearman")
cor_s
## [1] 1
porque difieren ambas correlaciones El coeficiente de correlación de Pearson es una medida de dependencia lineal entre dos variables aleatorias cuantitativas y el coeficiente de correlación de Spearman, es una medida de la correlación entre dos variables aleatorias (tanto continuas como discretas). Por eso dependiendo de la naturaleza de los datos usaremos una o la otra, pero no podemos usar indiscriminadamente la de Pearson por ser una de las más conocidas
\[y(t)= \alpha - (\alpha-w_{0})exp(-kt) \] * Funcion que permite modelar el crecimiento de una poblacion bajo una carecteristica particular ejemplo alimentacion
growth <- brody(0:10, 10, 5, 0.3)
M2 = growth
# Calculate inverse function
M2.1 <- brody.inverse(growth, 10, 5, 0.3)
par(mfrow= c(1,2),bg = "white", fg = "darkred", mar = c(2,2,2,2))
plot(M2, pch = 20, cex = 1.5, main = "Modelo Brody", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M2, lwd = 1)
plot(M2.1, pch = 20, cex = 1.5, main = "Modelo Brody inverso ", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M2.1, lwd = 1)
\[ y(t) = α(1 − βexp(−kt)^{1/(1−m)}) \] * Modelo utilizado para modelar variables de crecimeinto como altura,diametro , etc. por ejemplo en especies forestales
growth <- chapmanRichards(0:10, 10, 0.5, 0.3, 0.5)
M3 = growth
# Calculate inverse function
M3.1 <- chapmanRichards.inverse(growth, 10, 0.5, 0.3, 0.5)
par(mfrow= c(1,2),bg = "white", fg = "darkred", mar = c(2,2,2,2))
plot(M3, pch = 20, cex = 1.6, main = "Modelo Chapman-Richards ", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M3, lwd = 1)
plot(M3.1, pch = 20, cex = 1.6, main = "Modelo Chapman-Richards ", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M3.1, lwd = 1)
# Modelo de crecimiento Generalised Logistic \[y(t) = A + \frac{ U − A} {1 + βexp(−k(t − t_{0}))}\]
growth <- generalisedLogistic(0:10, 5, 10, 0.3, 0.5, 3)
M4 = growth
# Calculate inverse function
M4.1<- generalisedLogistic.inverse(growth, 5, 10, 0.3, 0.5, 3)
par(mfrow= c(1,2),bg = "white", fg = "darkred", mar = c(2,2,2,2))
plot(M4, pch = 20, cex = 1.6, main = "Modelo Generalised Logistic ", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M4, lwd = 1)
plot(M4.1, pch = 20, cex = 1.6, main = "Modelo Generalised Logistic inversa", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M4.1, lwd = 1)
# Modelo de crecimiento Generalised Richard
\[y(t) = A + \frac {U − A} {(1 + βexp(−k(t − t_{0})))^{(1/m)}}\] * Funcion utlizada para modelar varios procesos biológicos como epidemias
growth <- generalisedRichard(0:10, 5, 10, 0.3, 0.5, 1, 3)
M5 = growth
# Calculate inverse function
M5.1 <- generalisedRichard.inverse(growth, 5, 10, 0.3, 0.5, 1, 3)
par(mfrow= c(1,2),bg = "white", fg = "darkred", mar = c(2,2,2,2))
plot(M5, pch = 20, cex = 1.6, main = "Modelo Generalised Richard ", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M5, lwd = 1)
plot(M5.1, pch = 20, cex = 1.6, main = "Modelo Generalised Richard inversa", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M5.1, lwd = 1)
\[y(t) = αexp(−βexp(−k^{t}))\] * Funcion utlizada para modelar pronósticos mas aplicada al campo de la medicina
growth <- gompertz(0:10, 10, 0.5, 0.3)
M6 = growth
# Calculate inverse function
M6.1<- gompertz.inverse(growth, 10, 0.5, 0.3)
par(mfrow= c(1,2),bg = "white", fg = "darkred", mar = c(2,2,2,2))
plot(M6, pch = 20, cex = 1.6, main = "Modelo Gompertz ", xlab = "Tiempo", col = "darkgreen", xlim= c(0,12),ylim=c(0,11))
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M6, lwd = 1)
plot(M6.1, pch = 20, cex = 1.6, main = "Modelo Gompertz inversa", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M6.1, lwd = 1)
\[y(t) = \frac{α}{1 + βexp(−kt)} \] * Funcion utilizada para modelar enfermedades policÃclicas
growth <- logistic(0:10, 10, 0.5, 0.3)
M7 = growth
# Calculate inverse function
M7.1 <- logistic.inverse(growth, 10, 0.5, 0.3)
par(mfrow= c(1,2),bg = "white", fg = "darkred", mar = c(2,2,2,2))
plot(M7, pch = 20, cex = 1.6, main = "Modelo Logistic ", xlab = "Tiempo", col = "darkgreen", )
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M7, lwd = 1)
plot(M7.1, pch = 20, cex = 1.6, main = "Modelo Logistic inversa", xlab = "Tiempo", col = "darkgreen" )
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M7.1, lwd = 1)
# Modelo de crecimiento Log-logistic \[y(t) = \frac{α}{1 + βexp(−klog(t))} \] * Al igual que el modelo de crecimeinto gompertz permite el modelamiento de enfermedades policiclicas
growth <- loglogistic(0:10, 10, 0.5, 0.3)
M8 = growth
# Calculate inverse function
M8.1 <- loglogistic.inverse(growth, 10, 0.5, 0.3)
par(mfrow= c(1,2),bg = "white", fg = "darkred", mar = c(2,2,2,2))
plot(M8, pch = 20, cex = 1.6, main = "Modelo Log-logistic ", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M8, lwd = 1)
plot(M8.1, pch = 20, cex = 1.6, main = "Modelo Log-logistic inversa", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M8.1, lwd = 1)
# Modelo de crecimeinto Mitcherlich \[y(t) = (α − βk^{t})\] *funcion que modela la relacion entre un factor y su rendimeinto para generar dosis efectivas
growth <- mitcherlich(0:10, 10, 0.5, 0.3)
M9 = growth
# Calculate inverse function
M9.1 <- mitcherlich.inverse(growth, 10, 0.5, 0.3)
par(mfrow= c(1,2),bg = "white", fg = "darkred", mar = c(2,2,2,2))
plot(M9, pch = 20, cex = 1.6, main = "Modelo Mitcherlich ", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M9, lwd = 1)
plot(M9.1, pch = 20, cex = 1.6, main = "Modelo Mitcherlich inversa", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M9.1, lwd = 1)
# Modelo de crecimeinto Morgan-Mercer-Flodin
\[y(t) = \frac{ (w_{0}γ + αt^{m})} γ+ t^{m}\] * Funcion que modela la relacion estimulo y respuesta
growth <- mmf(0:10, 10, 0.5, 4, 1)
M10 = growth
# Calculate inverse function
M10.1 <- mmf.inverse(growth, 10, 0.5, 4, 1)
par(mfrow= c(1,2),bg = "white", fg = "darkred", mar = c(2,2,2,2))
plot(M10, pch = 20, cex = 1.6, main = "Modelo Morgan-Mercer-Flodin ", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M10, lwd = 1)
plot(M10.1, pch = 20, cex = 1.6, main = "Modelo Morgan-Mercer-Flodin inversa", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M10.1, lwd = 1)
\[y(t) = α(1 − βexp(−kt))\] * Funcion utlizada para modelar enfermedades monocÃclicas
growth <- monomolecular(0:10, 10, 0.5, 0.3)
M11 = growth
# Calculate inverse function
M11.1 <-monomolecular.inverse(growth, 10, 0.5, 0.3)
par(mfrow= c(1,2),bg = "white", fg = "darkred", mar = c(2,2,2,2))
plot(M11, pch = 20, cex = 1.6, main = "Modelo Monomolecular ", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M11, lwd = 1)
plot(M11.1, pch = 20, cex = 1.6, main = "Modelo Monomolecular inversa", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M11.1, lwd = 1)
\[y(t) = α(1 − exp(−kt))\] * Funcion utilizada para modelar relaciones de temperatura
growth <- negativeExponential(0:10, 1, 0.3)
M12 = growth
# Calculate inverse function
M12.1 <- negativeExponential.inverse(growth, 10, 0.3)
par(mfrow= c(1,2),bg = "white", fg = "darkred", mar = c(2,2,2,2))
plot(M12, pch = 20, cex = 1.6, main = "Modelo Negative exponential ", xlab = "Tiempo", col = "darkgreen")
lines(M12, lwd = 1)
grid(nx = 10, ny = 10, lwd = 1,col = "black")
plot(M12.1, pch = 20, cex = 1.6, main = "Modelo Negative exponential inversa", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M12.1, lwd = 1)
\[y(t) = [r0 + βexp(kt)]^{m}\] * Funcionque modela el crecimiento poblacional
growth <- richard(0:10, 10, 0.5, 0.3, 0.5)
M13 = growth
# Calculate inverse function
M13.1 <- richard.inverse(growth, 10, 0.5, 0.3, 0.5)
par(mfrow= c(1,2),bg = "white", fg = "darkred", mar = c(2,2,2,2))
plot(M13, pch = 20, cex = 1.6, main = "Modelo Richard ", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M13, lwd = 1)
plot(M13.1, pch = 20, cex = 1.6, main = "Modelo Richard inversa", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M13.1, lwd = 1)
\[y(t) = [r_{0} + βexp(kt)]^{m}\] *funcion utlizada para modeler la relacion de crecimiento poblaciones desde el caracter individual
growth <- schnute(0:10, 10, 5, .5, .5)
M14 = growth
# Calculate inverse function
M14.1 <- schnute.inverse(growth, 10, 5, .5, .5)
par(mfrow= c(1,2),bg = "white", fg = "darkred", mar = c(2,2,2,2))
plot(M14, pch = 20, cex = 1.6, main = "Modelo Schnute ", xlab = "Tiempo", col = "darkgreen")
lines(M14, lwd = 1)
grid(nx = 10, ny = 10, lwd = 1,col = "black")
plot(M14.1, pch = 20, cex = 1.6, main = "Modelo Schnute inversa", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M14.1, lwd = 1)
\[y(t) = α [1 + exp(−(β + kt)/m)]^{−m}\] * Funcion utlizada para el modelamiento de la dinamica poblacional
growth <- stannard(0:10, 1, .2, .1, .5)
M15 = growth
# Calculate inverse function
M15.1 <- stannard.inverse(growth, 1, .2, .1, .5)
par(mfrow= c(1,2),bg = "white", fg = "darkred", mar = c(2,2,2,2))
plot(M15, pch = 20, cex = 1.6, main = "Modelo Stannard ", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M15, lwd = 1)
plot(M15.1, pch = 20, cex = 1.6, main = "Modelo Stannard inversa", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M15.1, lwd = 1)
\[y(t) = (α(1 − m) − β ∗ exp(−kt))(1/(1 − m))\] *Funcion utlizada para el modelacion de el crecimeinto poblacional desde la longevidad
growth <- vonBertalanffy(0:10, 10, 0.5, 0.3, 0.5)
M16 = growth
# Calculate inverse function
M16.1 <- vonBertalanffy.inverse(growth, 10, 0.5, 0.3, 0.5)
par(mfrow= c(1,2),bg = "white", fg = "darkred", mar = c(2,2,2,2))
plot(M16, pch = 20, cex = 1.6, main = "Modelo von Bertalanffy ", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M16, lwd = 1)
plot(M16.1, pch = 20, cex = 1.6, main = "Modelo von Bertalanffy inversa", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M16.1, lwd = 1)
# Modelo de crecimeinto Weibull
\[y(t) = α − βexp(−k ∗ t^{m})\] *Funcion utilizada apra modelar el crecimiento poblacional en factores extremos
growth <- weibull(0:10, 10, 0.5, 0.3, 0.5)
M17 = growth
# Calculate inverse function
M17.1 <- weibull.inverse(growth, 10, 0.5, 0.3, 0.5)
par(mfrow= c(1,2),bg = "white", fg = "darkred", mar = c(2,2,2,2))
plot(M17, pch = 20, cex = 1.6, main = "Modelo von Weibull ", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M17, lwd = 1)
plot(M17.1, pch = 20, cex = 1.6, main = "Modelo Weibull inversa", xlab = "Tiempo", col = "darkgreen")
grid(nx = 10, ny = 10, lwd = 1,col = "black")
lines(M17.1, lwd = 1)
\[https://es.wikipedia.org/wiki/Humedad_relativa\] \[https://cran.r-project.org/web/packages/growthmodels/growthmodels.pdf\] \[https://www.rdocumentation.org/packages/growthmodels/versions/1.2.0\]
\[https://www.rdocumentation.org/packages/FSA/versions/0.8.30/topics/growthModels\]