Directorio de trabajo
setwd("~/pye1pm")Paquetes
library(pacman)
p_load("prettydoc", "xfun", "fdth", "modeest", "beanplot", "datasets", "DT", "ggplot2")Repaso de la unidad de competencia 1 de la materia de probabilidad y estadística de ITSON, semestre Enero-Mayo 2022.
Tablas de distribución, histogramas y polígonos
En este repaso se trabajarán con los datos de la velocidad de una reacción de una reacción enzimática
Imágen ilustrativa
Tabla de distribución de frecuencias.
El marco de datos de Puromicina tiene 23 filas y 3 columnas de la velocidad de reacción frente a la concentración de sustrato en una reacción enzimática que involucra células no tratadas o células tratadas con Puromicina.
reaccion <- Puromycin
reaccion## conc rate state
## 1 0.02 76 treated
## 2 0.02 47 treated
## 3 0.06 97 treated
## 4 0.06 107 treated
## 5 0.11 123 treated
## 6 0.11 139 treated
## 7 0.22 159 treated
## 8 0.22 152 treated
## 9 0.56 191 treated
## 10 0.56 201 treated
## 11 1.10 207 treated
## 12 1.10 200 treated
## 13 0.02 67 untreated
## 14 0.02 51 untreated
## 15 0.06 84 untreated
## 16 0.06 86 untreated
## 17 0.11 98 untreated
## 18 0.11 115 untreated
## 19 0.22 131 untreated
## 20 0.22 124 untreated
## 21 0.56 144 untreated
## 22 0.56 158 untreated
## 23 1.10 160 untreated
Tabla de frecuencias
tabla <- fdt(reaccion$conc, breaks = "Sturges")
tabla## Class limits f rf rf(%) cf cf(%)
## [0.0198,0.2017) 12 0.52 52.17 12 52.17
## [0.2017,0.3835) 4 0.17 17.39 16 69.57
## [0.3835,0.5654) 4 0.17 17.39 20 86.96
## [0.5654,0.7473) 0 0.00 0.00 20 86.96
## [0.7473,0.9291) 0 0.00 0.00 20 86.96
## [0.9291,1.111) 3 0.13 13.04 23 100.00
La tabla presentada anteriormente es una tabla de frecuencias, en la que se puede observar la frecuencia en la que los datos de conc (un vector numérico de concentraciones de sustrato (ppm)), son repetidos en un intervalo, se puede ver en su versión décimal, porcentual, y lo que es la frecuencia absoluta, en las mismas versiones.
Lo que a continuación se mostrará es ordenar los datos de la concentración de menor a mayor.
sort (reaccion$conc)## [1] 0.02 0.02 0.02 0.02 0.06 0.06 0.06 0.06 0.11 0.11 0.11 0.11 0.22 0.22 0.22
## [16] 0.22 0.56 0.56 0.56 0.56 1.10 1.10 1.10
Histograma de frecuencia absoluta
Se mostrarán los datos de la concentración de la tabla de frecuencia (en este caso la frecuencia absoluta) graficados en un histograma
plot (tabla, type ="fh", xlab="Concentración", ylab="Frecuencia")Histograma de frecuencia acumulada
Se presenta los datos de la concentración de la tabla de frecuencia (en este caso la frecuencia acumulada) graficados en un histograma
plot (tabla, type ="cfh", xlab="Concentración", ylab="Frecuencia acumulada")Histograma de frecuencia relativa
Y el último histograma que se presenta los datos de la concentración de la tabla de frecuencia (en este caso la frecuencia relativa %) graficados en un histograma
plot (tabla, type ="rfh", xlab="Concentración ", ylab="Frecuencia %")Ahora lo que se presentarán son los polígonos de frecuencia, que prácticamente es lo mismo que el histograma solo que en lugar de barras, son polígonos (líneas)
Polígono de frecuencia absoluta
plot(tabla, type="fp", xlab="Concentración", ylab="Frecuencia")Polígono de frecuencia acumulada
plot(tabla, type="cfp", xlab="Concentración", ylab="Frecuencia acumulada")Polígono de frecuencia relativa
plot(tabla, type="rfp", xlab="Concentración ", ylab="Frecuencia %")Medidas de tendencia central
Media
Este nos va indicar el promedio de nuestros datos de concentración, para esta operación lo que se hace es sumar todos los datos y dividirlos entre la cantidad de datos totales
mean (reaccion$conc)## [1] 0.3121739
Mediana
Este es el número intermedio entre todos los datos de nuestra concentración
median (reaccion$conc)## [1] 0.11
Moda
Este es el número o números que aparece con más frecuencia en nuestros datos de concentración
mlv(reaccion$conc, method = "mfv")## [1] 0.02 0.06 0.11 0.22 0.56
Se muestran lo que son los cuantiles, valor mínimo, primer cuartil, mediana, media, tercer cuartil, valor máximo
summary(reaccion$conc)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0200 0.0600 0.1100 0.3122 0.5600 1.1000
Gráfico de caja y bigote
A continuación se muestra lo que es la gráfica de caja y bigote, en la que se puede observar los cuantiles de una manera gráfica
boxplot (reaccion$conc)Medidas de dispersión
Varianza
Lo primero que realizaremos es obtener la varianza, que esta nos indicará la variabilidad de los datos respecto a nuestra media (0.3121739)
var(reaccion$conc)## [1] 0.1318632
Si le sacamos raíz cuadrada vamos a obtener la desviación estándar, que esta nos indicará qué tan dispersos están los datos con respecto a la media
Desviación estándar
sd(reaccion$conc)## [1] 0.3631298
Esto nos quiere decir que nuestros datos de la concentración están dispersos en 0.36 de la media que sacamos anteriormente 0.31
Gráfico de dispersión scatterplot
En esta gráfica se observa lo que es una comparativa de la concentración versus la velocidad de reacción
plot(reaccion$conc, reaccion$rate,
col = "red",
Main = "Gráfico de dispersión de concentración y velocidad de reacción",
xlab = "Concentración",
ylab = "Velocidad de reacción",
pch = 19)## Warning in plot.window(...): "Main" is not a graphical parameter
## Warning in plot.xy(xy, type, ...): "Main" is not a graphical parameter
## Warning in axis(side = side, at = at, labels = labels, ...): "Main" is not a
## graphical parameter
## Warning in axis(side = side, at = at, labels = labels, ...): "Main" is not a
## graphical parameter
## Warning in box(...): "Main" is not a graphical parameter
## Warning in title(...): "Main" is not a graphical parameter
Matriz de diagrama de dispersión
Esto es de mucha utilidad para conocer las relaciones que existen en nuestros datos, en este caso la concentración y la velocidad de reacción
reaccionx <- reaccion
reaccionx$state <- NULL
pairs (reaccionx) Se puede observar como es que la velocidad de reacción y la concentración se encuentra relacionado en la esquina superior derecha.
Cálculo y representación de la recta de mínimos cuadrados
Lo que se realiza en el siguiente comando es poner nuestra variable dependiente e independiente, en este caso se ha escogido como variable dependiente a la velocidad de reacción y la independiente es la concentración, al realizar nuestra regresión lineal nos arroja los siguientes resultados:
regresion <- lm(rate ~ conc, data = reaccion )
summary(regresion)##
## Call:
## lm(formula = rate ~ conc, data = reaccion)
##
## Residuals:
## Min 1Q Median 3Q Max
## -49.861 -15.247 -2.861 15.686 48.054
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 93.92 8.00 11.74 1.09e-10 ***
## conc 105.40 16.92 6.23 3.53e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 28.82 on 21 degrees of freedom
## Multiple R-squared: 0.6489, Adjusted R-squared: 0.6322
## F-statistic: 38.81 on 1 and 21 DF, p-value: 3.526e-06
El estimador de la desviación típica de los errores σ aparece como Residual standard error y su valor en el ejemplo es 28.82
Los intervalos de confianza para los parámetros se obtienen con el comando confint. El parámetro level permite elegir el nivel de confianza (por defecto es 0.95):
confint(regresion)## 2.5 % 97.5 %
## (Intercept) 77.28643 110.5607
## conc 70.21281 140.5832
Los parámetros de la ecuación de la recta de mínimos cuadrados que relaciona la velocidad de reacción en función de la concentración vienen dados por la columna ´Estimate´ de la tabla ´Coefficients´ de la salida anterior.
Por lo tanto, en este ejemplo la ecuación de la recta de mínimos cuadrados es:
\[ y=93.92+105.40x \]
Nuestra ecuación que relaciona la velocidad de reacción en función de la concentración, será utilizado para ver qué tan bueno es, se va utilizar lo que es una concentración de 0.2
\[ y=93.92+105.40*(0.2) \]
93.92+105.40*(0.2)## [1] 115
Y comparando con la gráfica realizada a continuación parece ser que nuestro modelo es aceptable.
Gráfica
En la siguiente gráfica se representa lo que son los datos de nuestro caso de estudio, junto a la recta que hemos generado con ayuda del comando lm
plot(reaccion$conc, reaccion$rate, xlab="Concentración", ylab="Velocidad de reacción")
abline(regresion)El coeficiente de determinación (es decir, el coeficiente de correlación al cuadrado) mide la bondad del ajuste de la recta a los datos. A partir de la salida anterior, vemos que su valor en este caso es Multiple R-squared: 0.6489
Estimación de predicciones
Si nosotros queremos realizar lo que son predicciones con datos que no contamos, podemos hacer uso de nuestro módelo que hemos creado anteriormente, vamos a utilizar concentraciones que van desde 0.01 hasta 3 para poder poner en práctica el modelo creado
nuevas.conc <- data.frame(conc = seq(0.01,3))
predict(regresion, nuevas.conc)## 1 2 3
## 94.97756 200.37556 305.77357
Por ejemplo para una concentración de 22 ppm, su velocidad de reacción será de 2412.67 counts,min,min.
Los intervalos de confianza para la respuesta media y los intervalos de predicción para la respuesta se pueden obtener usando el comando predict. Por ejemplo, el siguiente código calcula y representa los dos tipos de intervalos para el rango de concentraciones que va de 1 a 30 ppm:
plot(reaccion$conc, reaccion$rate, xlab="Concentración", ylab="Velocidad de reacción")
abline(regresion)
ic <- predict(regresion, nuevas.conc, interval = "confidence")
lines(nuevas.conc$conc, ic[,2], lty=2)
lines(nuevas.conc$conc, ic[,3], lty=2)xfun::embed_file("REPASOUC1.Rmd")