A.1 Cap. 2: Primer contacto con R
- Soluciona la ecuación \(\sqrt({\frac{24+12}{(2 * 3)^3})}\).
Solución:
sqrt((24+12)/(2*3)^3)
# [1] 0.4082
- Resuelve \(\mathrm{log_{10}}(|\frac{\mathrm{exp(10)}^2}{-10*9^{6}}|)\). Las barras verticales implican aplicar valor absoluto antes de calcular el logaritmo en base 10.
Solución:
log10(abs((exp(10)**2)/(-10*(9^6))))
# [1] 1.96
1.La función sigmoidal \(\sigma(\mathrm{z}) = \frac{1}{1+e^{-\mathrm{z}}}\) es muy importante en estadística. Permite convertir el resultado de una regresión logística (Odds ratios) en probabilidades, facilitando la interpretación. Utiliza la fórmula \(z = -1.69 + 1*0.56\), emulando el resultado hipotético de una regresión logística, como insumo para calcular su probabilidad correspondiente utilizando la función sigmoidal. Como dato extra, el resultado de \(\sigma(\mathrm{z})\) por 100 para convertirlo a probabilidad porcentual.
Solución:
### Crear z
<- -1.69 + 1*0.56
z
### Calcular la función sigmoidal
1 / (1 + exp(-z))
# [1] 0.2442
- Este ejercicio avanzado es de carácter explicativo. Sigue el ejercicio en la sección del Solucionario: Cap. 2, pregunta 3 correspondiente. Para calcular la derivaba de una función matemática, primero se debe crear la estructura matemática utilizando la función
expression()
. Una vez guardada la expresión, se utiliza la funciónD()
para derivar.
Calcula la primera derivada de:
\(f(x)=-2x+2\)
\(f(x)=-2x^2-5\)
\(f(x)=\frac{x^3+2}{3}\)
Calcula la primera derivada de una expresión con dos variables:
\(f(x)=x^2+y^2+2*x*y-3*x+4*y+4\)
Calcula la segunda derivada de:
\(f(x)=x^2+3*x\)
Solución:
### Crear las expresiones matemáticas
<- expression((-2*x)+2)
eMat1 <- expression((-2*(x^2))-5)
eMat2 <- expression(((x^3)+2)/3)
eMat3
### Función D() para derivar las expresiones sobre x
D(eMat1, "x")
# -2
D(eMat2, "x")
# -(2 * (2 * x))
D(eMat3, "x")
# 3 * x^2/3
### Crear la expresión matemática con dos variables (x e y)
<-expression(x^2+y^2+2*x*y-3*x+4*y+4)
eMat4
### Función D() para derivar la expresiones sobre x
D(eMat4, "x")
# 2 * x + 2 * y - 3
### Función D() para derivar la expresiones sobre y
D(eMat4, "y")
# 2 * y + 2 * x + 4
### Crear la expresión matemática para obtener segunda derivada
<- expression(x^2+3*x)
eMat5
### Primera derivada
D(eMat5, "x")
# 2 * x + 3
### Segunda derivada
D(D(eMat5, "x"),'x')
# [1] 2
Para resolver integrales en R, puedes revisar la documentación de la función integrate()
en RDocumentation.
# Un ejemplo rápido de uso extraído de la documentación
<- function(x) {1/((x+1)*sqrt(x))}
integrand integrate(integrand, lower = 0, upper = Inf)
# 3.142 with absolute error < 2.7e-05
- Crea un vector con llamado
num1
conteniendo 1000 números aleatorios con distribución normal, con promedio 19 y desviación estándar 1.29 (revisa la TABLA 2.4). Asegúrate de ejecutar previamente la funciónset.seed(123)
para que el ejercicio sea replicable.
Solución:
set.seed(123)
<- rnorm(1000, mean=19, sd=1.29)
num1
### La función head() permite ver los primeros N elementos del vector
### Aquí se define N como 20 elementos
head(num1, 20)
# [1] 18.28 18.70 21.01 19.09 19.17 21.21 19.59 17.37 18.11 18.43 20.58 19.46 19.52
# [14] 19.14 18.28 21.31 19.64 16.46 19.90 18.39
- Calcula el promedio y la desviación estándar del objeto
num1
. ¿Son exactamente iguales a los valores definidos con los que creaste el conjunto de datos usandornorm()
?.
Solución:
mean(num1)
# [1] 19.02
sd(num1)
# [1] 1.279
Como habrás notado. Los valores obtenidos no son exactamente los valores de promedio y desviación estándar con los que se generaron los mil números aleatorios con rnorm()
. La aleatorización impide que los valores sean idénticos, no obstante siempre tienden a lo solicitado. No que sucede exclusivamente en R, de hecho ningún lenguaje de programación lo hace idéntico.
- Calcula los cuartiles de dicho conjunto de datos. ¿Cuál es el valor del cuartil 50% (que es conocido como mediana) (revisa la TABLA 2.4)?
Solución:
### Para ver los cuartiles por defecto
quantile(num1)
# 0% 25% 50% 75% 100%
# 15.38 18.19 19.01 19.86 23.18
### Para obtener el cuartil 50% o mediana
quantile(num1, probs=0.5)
# 50%
# 19.01
- Utilizando los operadores relacionales, convierte el vector numérico
num1
a vector lógico, aplicando la pregunta lógica “números mayores a 20.0”. Guarda el resultado en el ambiente con el nombreVL20
(revisa la TABLA 2.3).
Solución:
<- num1 > 20.0
VL20
### La función head() permite ver los primeros N elementos del vector
### Aquí se define N como 35 elementos
head(VL20, 35)
# [1] FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
# [14] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# [27] TRUE FALSE FALSE TRUE FALSE FALSE TRUE TRUE TRUE
- Coloca el objeto
VL20
dentro de la funciónmean()
. La función mean calcula normalmente el promedio de un conjunto de datos numéricos. No obstante, cuando se le ofrece un vector lógico, contabiliza la cantidad de elementosTRUE
y ofrece la proporción de verdaderos respecto al total de elemento del conjunto. ¿Cuál es la proporción de elementosFALSE
del vectorVL20
? (revisa la TABLA 2.3).
Solución:
### Proporción de TRUE en el conjunto
mean(VL20)
# [1] 0.221
### Proporción de FALSE en el conjunto
1 - mean(VL20)
# [1] 0.779
- Utilizando los operadores lógicos y relacionales, convierte el vector numérico
num1
a vector lógico, aplicando la pregunta lógica “números menor igual a 19.5 y números mayor a 15.7”. (revisa la TABLA 2.3). Si se sabe que son 1000 elementos los que contiene el vector, ¿Cuántos elementos del conjunto encajan dentro de la premisa lógica anterior?.
Solución:
### Crear el vector lógico, dándole un nombre cualquiera
<- (num1 < 19 & num1 > 15.7)
num1LOGICO
### Proporción de elementos TRUE
### Es decir, que cumplieron la premisa anterior
mean(num1LOGICO)
# [1] 0.491
### Convertir proporción a cantidad,
### multiplicando por el total de datos del vector
mean(num1LOGICO) * length(num1LOGICO)
# [1] 491