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")

Download REPASOUC1.Rmd