En esta actividad se analizarán datos provenientes de una tarea repetitiva en niños y adultos diagnosticados y no diagnosticados en Trastorno de Déficit de Atención con Hiperactividad (ADHD en inglés), residentes en Barranquilla.
Las variables de interés son sexo, edad, adhdstatus y las variables del seguimiento trait_A1, trait_A2, \(...\), trait_A50. Estas últimas representan el estado de finalización de la tarea. La tarea se cuantifica en una escala de 1 a 5. Por simplicidad, valores diferentes a 5 se consideran no exitosos.
Fecha de entrega: Sábado, 25 de Mayo de 2024.
Preguntas
P1
Suponga que la respuesta de un individuo puede resumirse en el vector 01000111111101100100001110100111100110000111001110. Construya una función que permita calcular la entropía de Shannon a partir de un string de 0s y 1s. Calcule la entropía \(H\) para cada individuo. Estudie la distribución de \(H_1, H_2,\ldots, H_n\) por sexo y dignóstico de ADHD. Qué observa?
Código
# Función para calcular la entropía de Shannonshannon_entropia <-function(v) { counts <-table(v) probs <-prop.table(counts) entropia <--sum(probs *log2(probs))# Calcular la entropía de Shannonreturn(entropia)}# Vector de respuesta del individuov <-"01000111111101100100001110100111100110000111001110"# Calcular la entropía de Shannon para el vector de respuestaentropia_v <-round(shannon_entropia(strsplit(v, "")[[1]]),4)
Respuesta. El valor de la Entropía de Shannon para el vector del individuo del P1 es de 0.9954, lo que sugiere un alto grado de variabilidad en los datos.
Para profundizar en este análisis, procederemos a examinar la entropía para cada uno de los individuos, considerando tanto el sexo como el diagnóstico de ADHD.
Siguiendo la instrucción establecida en la introducción, procedemos a transformar los datos para calcular la entropía de cada individuo en nuestro conjunto de datos. La escala de calificiación de cada tarea va del 1 al 5. Para simplificar, valores distintos de 5 se consideran no exitosos, es decir, 0, mientras que los valores iguales a 5 se consideran exitosos, es decir, 1.
Código
datos_t <-ifelse(datos[,5:53] <5, 0, 1) #transformación de datos, donde cualquier puntaje diferente de 5 se considera no exitoso, es decir toma le valor de 0. datos_p1 <-cbind(datos$uid, datos$sexo, datos$edad, datos$adhdstatus,ifelse(datos[,5:53] <5, 0, 1))colnames(datos_p1)[1:4] <-c('uid','sexo', 'edad', 'adhdstatus') # Renombrar las columnas en el dataframe temporal
A continuación se describe función para el cálculo de la entrpía para cada individuo,
A continuación, se presenta el valor de entropía correspondiente a cada individuo
Distribución de la Entropía de \(H_1, H_2,\ldots, H_n\) por Género.
Código
df_entropia_total <-data.frame(df_entropia_total) df_entropia_total%>%group_by(sexo) %>%plot_ly() %>%add_trace(data = df_entropia_total,x =~sexo,y =~entropia,text =~entropia,type ='violin',box =list(visible = T),meanline =list(visible = T), color =~sexo,colors =c("#8C4D3F","#1B7F7A"))%>%# cafe y azullayout(title ="Distribución de la Entropía por Género",xaxis =list(title ="Género"),yaxis =list(title ="Valor de Entropía"))
Código
df_entropia_total <-data.frame(df_entropia_total) df_entropia_total%>%group_by(sexo) %>%plot_ly() %>%add_trace(data = df_entropia_total,x =~entropia,y =~sexo,type ='histogram',color =~sexo,colors =c("#8C4D3F","#1B7F7A"))%>%# cafe y azullayout(title ="Distribución de la Entropía por Género",xaxis =list(title ="Género"),yaxis =list(title ="Valor de Entropía"))
Nota
Para facilitar el análisis del gráfico, es importante tener en cuenta las siguientes designaciones:
Género: F = Female, M = Male
Basándonos en los gráficos anteriores, se puede afirmar que la distribución de la entropía en función del género es asimétrica con una cola a la derecha y un sesgo a la izquierda. Esta asimetría indica que la mayor concentración de datos se encuentra en los valores más altos de entropía, mientras que el sesgo hacia la izquierda sugiere la presencia de valores atípicos que están bastante distantes de la mayoría de las observaciones. Estos valores atípicos requieren un análisis más detenido para comprender su influencia en los datos y su posible impacto en la interpretación de los resultados.
Distribución de la Entropía de \(H_1, H_2,\ldots, H_n\) por Género y Diagnóstico.
Código
df_entropia_total$adhdstatus <-factor(df_entropia_total$adhdstatus)df_entropia_total$sexo <-factor(df_entropia_total$sexo)fig_v_p1 <- df_entropia_total %>%plot_ly(x =~sexo, y =~entropia, type ='violin', color =~adhdstatus,colors =c("#8C4D3F","#1B7F7A"),box =list(visible =TRUE),meanline =list(visible =TRUE) ) %>%layout(violinmode ="group",yaxis =list(zeroline =FALSE, title ="Valor de Entropia"),title ="Distribución de la Entropía por Género y Diagnóstico",xaxis =list(title ="Género") )fig_v_p1
Nota
Para facilitar el análisis del gráfico, es importante tener en cuenta las siguientes designaciones:
Género: F = Female, M = Male
Diagnóstico: 0 = Enfermo, 1 = Sano
Basándonos en el gráfico anterior, se confirma que la distribución de la entropía según el género y el diagnóstico (enfermo o sano) muestra asimetría, con una cola hacia la derecha y un sesgo hacia la izquierda en el caso de los individuos masculinos. Esta asimetría indica que la concentración principal de datos se encuentra en los valores más altos de entropía, mientras que el sesgo hacia la izquierda sugiere la presencia de valores atípicos, los cuales están significativamente alejados de la mayoría de las observaciones. Estos valores atípicos necesitan ser analizados detenidamente para entender su influencia en los datos y su posible repercusión en la interpretación de los resultados.
Asimismo, se observa que en el caso de las mujeres, ya sean diagnosticadas como sanas o enfermas, los valores de entropía exhiben una coincidencia entre la mediana y la media. Esto sugiere simetría en la distribución. Sin embargo, es importante destacar que los datos no siguen una distribución normal, como se evidenció en el análisis previo.
P2
Conside el vector anterior. Construya una función que calcule el número de cambios de estado. En este caso, una matriz de transición podría ayudar.
Código
# Vector de respuesta del individuo P1V <-"01000111111101100100001110100111100110000111001110"#Función Maginamagia <-function(V) {#número de caracteres n <-nchar(V) aux =as.numeric(strsplit(V,"")[[1]])#número de 1s n1 =sum(aux ==1)#número de 0s n0 =sum(aux ==0)# aux lag auxlag1 <-c(aux[-1], NA) nij <-table(aux,auxlag1)names(nij) <-c('n00','n10','n01','n11')# Crear matriz matriz <-matrix(c(nij['n00'], nij['n10'], nij['n01'], nij['n11']), nrow =2, byrow =TRUE)rownames(matriz) <-c('0', '1')colnames(matriz) <-c('0', '1')# Resultadolist(n = n, n1 = n1, n0 = n0, switch =sum(nij[2:3]), nij = matriz)}
Respuesta. El número de cambios de estado al completar una tarea repetitiva por parte de un individuo, suponiendo que sus respuestas se resumen en el vector 01000111111101100100001110100111100110000111001110, es de 20.
P3
Construya la matriz de transición para el individuo 83. Calcule \[P(s+1 = j | s = i)\] donde \(s\) es el intento e \(i,j=\{0,1\}\). Defina esta matriz de probabilidades como \(\mathbf{P}^{(1)}\). Tenga en cuenta que \(\mathbf{P}^{(1)}\) es de dimensión \(2\times 2\).
Respuesta. Se requiere construir la matriz de transición para el individuo número 83, relacionada a continuacion:
Para el calcular la matriz de probabilidades \(P^{(1)}\), necesitamos calcular las probabilidades de transición de \(i\) a \(j\) para cada par de estados \(i\), \(j\) en el primer paso. Por ejemplo, \(P(s+1=0∣s=0)\) representa la probabilidad de que el estado en el siguiente intento sea 0 dado que el estado actual es 0.
A continuación se visualiza la matriz de probabilidades \(P^{(1)}\):
# Función Matriz de probabilidadp_matriz <-function(V) {# Número de caracteres n <-nchar(V) aux <-as.numeric(strsplit(V,"")[[1]])# Auxiliar para el lag auxlag1 <-c(aux[-1], NA) nij <-table(aux, auxlag1)names(nij) <-c('n00','n10','n01','n11')# Crear matriz de probabilidades P1 <-matrix(0, nrow =2, ncol =2)# Calcular probabilidades (dada la condición del enunciado la probabilidad se calcula de esta forma) P1[1, 1] <- nij['n00'] /sum(nij[c('n00', 'n01')]) P1[1, 2] <- nij['n01'] /sum(nij[c('n00', 'n01')]) P1[2, 1] <- nij['n10'] /sum(nij[c('n10', 'n11')]) P1[2, 2] <- nij['n11'] /sum(nij[c('n10', 'n11')]) # Resultadoreturn(P1)}
Código
matriz_i_83 <-p_matriz(i_83)
P4
Construya la matriz de transición en el paso \(k\) utilizando la propiedad de Markov para matrices de transición, esto es \[
\mathbf{P}^{(k)}_M = \underset{k\text{-veces}}{\underbrace{\mathbf{P}^{(1)}\times \mathbf{P}^{(1)}\times\mathbf{P}^{(1)}\times\cdots\times\mathbf{P}^{(1)}}}
\]
En la expresión anterior, \(M\) simboliza el hecho de que está utilizando la propiedad de Markov para matrices de transición. Además, el símbolo \(\times\) se refiere a multiplicación matricial y no a potencias.
Respuesta. La propiedad de Markov para matrices de transición establece que la matriz de transición en el paso \(k\) puede obtenerse multiplicando la matriz de transición en el primer paso \(P^{(1)}\) consigo misma \(k−1\) veces. Para mas detalle ver aquí.
A continuación se visualiza la matriz de probabilidades \(P^{(47)}_M\)
De lo anterior se puede afirmar que para el individuo 83 al completar una tarea repetitiva:
La probabilidad de que el estado en el siguiente intento (paso \(48\)) sea 0 dado que el estado actual (paso \(47\)) es 0 (\(P(47 = 0∣s=0)\))es del 59,25%;
La probabilidad de que el estado en el siguiente intento (paso \(48\)) sea 1 dado que el estado actual (paso \(47\)) es 0 (\(P(47=1∣s=0)\)) es del 40,75%;
La probabilidad de que el estado en el siguiente intento (paso \(48\)) sea 0 dado que el estado actual (paso \(47\)) es 1 (\(P(47=0∣s=1)\)) es del 59,25%;
La probabilidad de que el estado en el siguiente intento (paso \(48\)) sea 1 dado que el estado actual (paso \(47\)) es 1 (\(P(47=1∣s=1)\)) es del 40,75%.
Código
k <-nchar(df_respuestas[1, "respuesta"])k
[1] 48
Código
# Función para construir la matriz de transición en el paso kp_k_matriz <-function(P1, k) {# Inicializar la matriz de transición en el paso k P_k <- P1# Realizar la multiplicación matricial de P1 k-1 vecesfor (i in1:(k -1)) { P_k <- P_k %*% P1 }return(P_k)}
Código
p_k_matriz_i_83 <-p_k_matriz(matriz_i_83,k)
P5
Calcule \(\mathbf{P}^{(k)}\) como \(P(s+k = j | s = i)\) para \(k=\{1,2,3,4\}\). Use una prueba \(\chi^2\) para tablas de contingencia y compare estos resultados con \(\mathbf{P}^{(k)}_M\). Concluya.
Respuesta.Aquí escribe la respuesta.
A continuación se describe código con función para creación de tablas de contingencia.
Código
# Función para generar la tabla de contingenciac_tabla <-function(P) { n <-nrow(P) table_values <-c(P[1, 1], P[1, 2], P[2, 1], P[2, 2]) c_tabla <-matrix(table_values, nrow =2, byrow =TRUE)rownames(c_tabla) <-c("s = 0", "s = 1")colnames(c_tabla) <-c("s+k = 0", "s+k = 1")return(c_tabla)}
Se calcula la matriz de probabilidad para el individuo \(83\) para \(k=\{1,2,3,4\}\) y se generan tablas de contingencia.
s+k = 0 s+k = 1
s = 0 0.5900406 0.4099594
s = 1 0.5960178 0.4039822
Tabla de contingencia para \(k=2\)
Código
c_tabla2
s+k = 0 s+k = 1
s = 0 0.6058985 0.3941015
s = 1 0.5729630 0.4270370
Tabla de contingencia para \(k=3\)
Código
c_tabla3
s+k = 0 s+k = 1
s = 0 0.5900406 0.4099594
s = 1 0.5960178 0.4039822
Tabla de contingencia para \(k=4\)
Código
c_tabla4
s+k = 0 s+k = 1
s = 0 0.5929185 0.4070815
s = 1 0.5918338 0.4081662
Se calcula la matriz de probabilidad de acuerdo a lo establecido por la cadena de Markov para el individuo \(83\) para \(k=\{1,2,3,4\}\) y se generan tablas de contingencia.
s+k = 0 s+k = 1
s = 0 0.5185185 0.4814815
s = 1 0.7000000 0.3000000
Tabla de contingencia para \(k=2\)
Código
c_tabla1_k2M
s+k = 0 s+k = 1
s = 0 0.6058985 0.3941015
s = 1 0.5729630 0.4270370
Tabla de contingencia para \(k=3\)
Código
c_tabla1_k3M
s+k = 0 s+k = 1
s = 0 0.5900406 0.4099594
s = 1 0.5960178 0.4039822
Tabla de contingencia para \(k=4\)
Código
c_tabla1_k4M
s+k = 0 s+k = 1
s = 0 0.5929185 0.4070815
s = 1 0.5918338 0.4081662
Use una prueba \(\chi^2\) para comparar las matrices de probabilidades \(P^{(k)}\) y \(P^{(k)}_M\)
Código
# Realiza la prueba de chi-cuadradochi_sq_test_1 <-chisq.test(c_tabla1, p = c_tabla1_k1M)chi_sq_test_2 <-chisq.test(c_tabla2, p = c_tabla1_k2M)chi_sq_test_3 <-chisq.test(c_tabla3, p = c_tabla1_k3M)chi_sq_test_4 <-chisq.test(c_tabla4, p = c_tabla1_k4M)chi_sq_test_1
Pearson's Chi-squared test with Yates' continuity correction
data: c_tabla1
X-squared = 7.5718e-33, df = 1, p-value = 1
Código
chi_sq_test_1
Pearson's Chi-squared test with Yates' continuity correction
data: c_tabla1
X-squared = 7.5718e-33, df = 1, p-value = 1
Código
chi_sq_test_3
Pearson's Chi-squared test with Yates' continuity correction
data: c_tabla3
X-squared = 7.5718e-33, df = 1, p-value = 1
Código
chi_sq_test_4
Pearson's Chi-squared test with Yates' continuity correction
data: c_tabla4
X-squared = 0, df = 1, p-value = 1
Se plantea la siguiente hipotesis para comparar las matrices de probabilidades \(P^{(k)}\) y \(P^{(k)}_M\)
De los resultados obtenidos anteriormente se puede inferir no hay suficiente evidencia para rechazar la hipótesis nula, lo que sugiere que las matrices de probabilidades \(\mathbf{P}^{(k)}\) y \(\mathbf{P}^{(k)}_M\) son similares.
Ejecutar el código
---title: "Analítica Avanzada de Datos"subtitle: "Challenge #1"author: - name: Katherine M. Tajan Niebles #orcid: 0000-0002-3146-7899 #url: https://jorgeivanvelez.netlify.app/ email: ktajan@uninorte.edu.co affiliation: - name: Universidad del Norte, Barranquilladate: "`r Sys.Date()`"lang: esself-contained: truefontsize: 14ptcode-fold: showcode-tools: truenumber-sections: falseformat: htmltoc: truetoc-title: ""toc-depth: 3---```{r setup, include=FALSE, message=FALSE}## mostrar siempre el códigoknitr::opts_chunk$set(echo = TRUE)``````{r, echo=FALSE, message=FALSE, warning=FALSE}library(dplyr)library(plotly)library(DT)```## IntroducciónEn esta actividad se analizarán datos provenientes de una tarea repetitiva en niños y adultos diagnosticados y no diagnosticados en Trastorno de Déficit de Atención con Hiperactividad ([ADHD](https://www.cdc.gov/ncbddd/Spanish/adhd/facts.html) en inglés), residentes en Barranquilla.Los datos se encuentran [aquí](https://www.dropbox.com/scl/fi/w3gyohi6gxlx8a5gqewd1/taskA.txt?rlkey=gtlegctvjc1igec75v137a194&dl=0).Las variables de interés son `sexo`, `edad`, `adhdstatus` y las variables del seguimiento `trait_A1`, `trait_A2`, $...$, `trait_A50`. Estas últimas representan el `estado` de finalización de la tarea. La tarea se cuantifica en una escala de `1` a `5`. Por simplicidad, valores diferentes a `5` se consideran **no** exitosos.**Fecha de entrega:** Sábado, 25 de Mayo de 2024.## Preguntas### P1Suponga que la respuesta de un individuo puede resumirse en el vector `01000111111101100100001110100111100110000111001110`. Construya una función que permita calcular la [entropía](https://en.wikipedia.org/wiki/Entropy_(information_theory)#Definition) de Shannon a partir de un `string` de 0s y 1s. Calcule la entropía $H$ para cada individuo. Estudie la distribución de $H_1, H_2,\ldots, H_n$ por sexo y dignóstico de ADHD. Qué observa?```{r, echo=FALSE, message=FALSE, warning=FALSE}# Lectura de datos path <- "C:/Users/kathy/OneDrive - Universidad del Norte/Semestre 3/Analítica Avanzada de Datos/Semana 1/Tareas S1/Challenge #1/taskA.txt"x <- read.table(path, header = TRUE)x%>% select(-ina, -hyp, -combined) -> datos``````{r}# Función para calcular la entropía de Shannonshannon_entropia <-function(v) { counts <-table(v) probs <-prop.table(counts) entropia <--sum(probs *log2(probs))# Calcular la entropía de Shannonreturn(entropia)}# Vector de respuesta del individuov <-"01000111111101100100001110100111100110000111001110"# Calcular la entropía de Shannon para el vector de respuestaentropia_v <-round(shannon_entropia(strsplit(v, "")[[1]]),4)```**Respuesta.** El valor de la `Entropía de Shannon` para el vector del individuo del P1 es de `r entropia_v`, lo que sugiere un alto grado de variabilidad en los datos.Para profundizar en este análisis, procederemos a examinar la entropía para cada uno de los individuos, considerando tanto el sexo como el diagnóstico de ADHD.Siguiendo la instrucción establecida en la introducción, procedemos a transformar los datos para calcular la entropía de cada individuo en nuestro conjunto de datos. La escala de calificiación de cada tarea va del 1 al 5. Para simplificar, valores distintos de 5 se consideran no exitosos, es decir, 0, mientras que los valores iguales a 5 se consideran exitosos, es decir, 1.```{r}datos_t <-ifelse(datos[,5:53] <5, 0, 1) #transformación de datos, donde cualquier puntaje diferente de 5 se considera no exitoso, es decir toma le valor de 0. datos_p1 <-cbind(datos$uid, datos$sexo, datos$edad, datos$adhdstatus,ifelse(datos[,5:53] <5, 0, 1))colnames(datos_p1)[1:4] <-c('uid','sexo', 'edad', 'adhdstatus') # Renombrar las columnas en el dataframe temporal```A continuación se describe función para el cálculo de la entrpía para cada individuo,```{r}df_respuestas <-data.frame(respuesta =apply(datos_p1[, -c(2:5)], 1, function(row) {paste(row[-1], collapse ="")}), uid = datos_p1[,1])entropia_dfres <-sapply(strsplit(df_respuestas$respuesta, ""), function(respuesta) {round(shannon_entropia(respuesta), 4)})df_entropia_total <-data.frame(entropia_dfres)df_entropia_total<-cbind(datos$uid, datos$sexo, datos$edad, datos$adhdstatus, df_entropia_total$entropia_dfres)colnames(df_entropia_total)[1:5] <-c('uid','sexo', 'edad', 'adhdstatus', 'entropia') # Renombrar las columnas en el dataframe ```::: callout-importantA continuación, se presenta el valor de entropía correspondiente a cada individuo:::```{r, echo=FALSE, message=FALSE, warning=FALSE}# Crear tabla interactivadatatable(df_entropia_total, filter = "top", # Mostrar cuadros de búsqueda en la parte superior de cada columna options = list(pageLength = 10) # Agregar título encima de la tabla)```##### ##### Distribución de la Entropía de $H_1, H_2,\ldots, H_n$ por Género.```{r, message=FALSE, warning=FALSE}df_entropia_total <- data.frame(df_entropia_total) df_entropia_total%>% group_by(sexo) %>% plot_ly() %>% add_trace(data = df_entropia_total, x = ~sexo, y = ~entropia, text =~entropia, type = 'violin', box = list(visible = T), meanline = list(visible = T), color = ~sexo, colors = c("#8C4D3F","#1B7F7A"))%>% # cafe y azul layout(title = "Distribución de la Entropía por Género", xaxis = list(title = "Género"), yaxis = list(title = "Valor de Entropía"))``````{r}df_entropia_total <-data.frame(df_entropia_total) df_entropia_total%>%group_by(sexo) %>%plot_ly() %>%add_trace(data = df_entropia_total,x =~entropia,y =~sexo,type ='histogram',color =~sexo,colors =c("#8C4D3F","#1B7F7A"))%>%# cafe y azullayout(title ="Distribución de la Entropía por Género",xaxis =list(title ="Género"),yaxis =list(title ="Valor de Entropía"))```::: callout-notePara facilitar el análisis del gráfico, es importante tener en cuenta las siguientes designaciones:- Género: F = Female, M = Male:::Basándonos en los gráficos anteriores, se puede afirmar que la distribución de la entropía en función del género es asimétrica con una cola a la derecha y un sesgo a la izquierda. Esta asimetría indica que la mayor concentración de datos se encuentra en los valores más altos de entropía, mientras que el sesgo hacia la izquierda sugiere la presencia de valores atípicos que están bastante distantes de la mayoría de las observaciones. Estos valores atípicos requieren un análisis más detenido para comprender su influencia en los datos y su posible impacto en la interpretación de los resultados.##### Distribución de la Entropía de $H_1, H_2,\ldots, H_n$ por Género y Diagnóstico.```{r, message=FALSE, warning=FALSE}df_entropia_total$adhdstatus <- factor(df_entropia_total$adhdstatus)df_entropia_total$sexo <- factor(df_entropia_total$sexo)fig_v_p1 <- df_entropia_total %>% plot_ly( x = ~sexo, y = ~entropia, type = 'violin', color = ~adhdstatus, colors = c("#8C4D3F","#1B7F7A"), box = list(visible = TRUE), meanline = list(visible = TRUE) ) %>% layout( violinmode = "group", yaxis = list(zeroline = FALSE, title = "Valor de Entropia"), title = "Distribución de la Entropía por Género y Diagnóstico", xaxis = list(title = "Género") )fig_v_p1```::: callout-notePara facilitar el análisis del gráfico, es importante tener en cuenta las siguientes designaciones:- Género: F = Female, M = Male- Diagnóstico: 0 = Enfermo, 1 = Sano:::Basándonos en el gráfico anterior, se confirma que la distribución de la entropía según el género y el diagnóstico (enfermo o sano) muestra asimetría, con una cola hacia la derecha y un sesgo hacia la izquierda en el caso de los individuos masculinos. Esta asimetría indica que la concentración principal de datos se encuentra en los valores más altos de entropía, mientras que el sesgo hacia la izquierda sugiere la presencia de valores atípicos, los cuales están significativamente alejados de la mayoría de las observaciones. Estos valores atípicos necesitan ser analizados detenidamente para entender su influencia en los datos y su posible repercusión en la interpretación de los resultados.Asimismo, se observa que en el caso de las mujeres, ya sean diagnosticadas como sanas o enfermas, los valores de entropía exhiben una coincidencia entre la mediana y la media. Esto sugiere simetría en la distribución. Sin embargo, es importante destacar que los datos no siguen una distribución normal, como se evidenció en el análisis previo.### P2Conside el vector anterior. Construya una función que calcule el número de *cambios de estado*. En este caso, una matriz de transición podría ayudar.```{r}# Vector de respuesta del individuo P1V <-"01000111111101100100001110100111100110000111001110"#Función Maginamagia <-function(V) {#número de caracteres n <-nchar(V) aux =as.numeric(strsplit(V,"")[[1]])#número de 1s n1 =sum(aux ==1)#número de 0s n0 =sum(aux ==0)# aux lag auxlag1 <-c(aux[-1], NA) nij <-table(aux,auxlag1)names(nij) <-c('n00','n10','n01','n11')# Crear matriz matriz <-matrix(c(nij['n00'], nij['n10'], nij['n01'], nij['n11']), nrow =2, byrow =TRUE)rownames(matriz) <-c('0', '1')colnames(matriz) <-c('0', '1')# Resultadolist(n = n, n1 = n1, n0 = n0, switch =sum(nij[2:3]), nij = matriz)}``````{r, echo=FALSE, message=FALSE, warning=FALSE}d<-magia(V)```**Respuesta.** El número de cambios de estado al completar una tarea repetitiva por parte de un individuo, suponiendo que sus respuestas se resumen en el vector `01000111111101100100001110100111100110000111001110`, es de `r d["switch"]`.### P3Construya la matriz de transición para el individuo `83`. Calcule $$P(s+1 = j | s = i)$$ donde $s$ es el intento e $i,j=\{0,1\}$. Defina esta matriz de probabilidades como $\mathbf{P}^{(1)}$. Tenga en cuenta que $\mathbf{P}^{(1)}$ es de dimensión $2\times 2$.**Respuesta.** Se requiere construir la matriz de transición para el individuo número 83, relacionada a continuacion:$$\begin{bmatrix}14 & 14\\ 13 & 6 \end{bmatrix}$$Para el calcular la matriz de probabilidades $P^{(1)}$, necesitamos calcular las probabilidades de transición de $i$ a $j$ para cada par de estados $i$, $j$ en el primer paso. Por ejemplo, $P(s+1=0∣s=0)$ representa la probabilidad de que el estado en el siguiente intento sea 0 dado que el estado actual es 0.A continuación se visualiza la matriz de probabilidades $P^{(1)}$:$$ P^{(1)} = \begin{bmatrix}0.5186 & 0.4814\\ 0.7000 & 0.3000\end{bmatrix}$$De lo anterior se puede afirmar que para el individuo 83 al completar una tarea repetitiva:- La probabilidad de que el estado en el siguiente intento sea 0 dado que el estado actual es 0 ($P(s+1=0∣s=0)$) es del 51,86%;- La probabilidad de que el estado en el siguiente intento sea 1 dado que el estado actual es 0 ($P(s+1=1∣s=0)$) es del 48,14%;- La probabilidad de que el estado en el siguiente intento sea 0 dado que el estado actual es 1 ($P(s+1=0∣s=1)$) es del 70%;- La probabilidad de que el estado en el siguiente intento sea 1 dado que el estado actual es 1 ($P(s+1=1∣s=1)$) es del 30%.```{r, message=FALSE}i_83 <- df_respuestas[df_respuestas$uid == 83, "respuesta"]t_matriz <- magia(i_83)``````{r, message=FALSE, warning=FALSE}# Función Matriz de probabilidadp_matriz <- function(V) { # Número de caracteres n <- nchar(V) aux <- as.numeric(strsplit(V,"")[[1]]) # Auxiliar para el lag auxlag1 <- c(aux[-1], NA) nij <- table(aux, auxlag1) names(nij) <- c('n00','n10','n01','n11') # Crear matriz de probabilidades P1 <- matrix(0, nrow = 2, ncol = 2) # Calcular probabilidades (dada la condición del enunciado la probabilidad se calcula de esta forma) P1[1, 1] <- nij['n00'] / sum(nij[c('n00', 'n01')]) P1[1, 2] <- nij['n01'] / sum(nij[c('n00', 'n01')]) P1[2, 1] <- nij['n10'] / sum(nij[c('n10', 'n11')]) P1[2, 2] <- nij['n11'] / sum(nij[c('n10', 'n11')]) # Resultado return(P1)}``````{r, message=FALSE, warning=FALSE}matriz_i_83 <- p_matriz(i_83)```### P4Construya la matriz de transición en el paso $k$ utilizando la propiedad de Markov para matrices de transición, esto es $$ \mathbf{P}^{(k)}_M = \underset{k\text{-veces}}{\underbrace{\mathbf{P}^{(1)}\times \mathbf{P}^{(1)}\times\mathbf{P}^{(1)}\times\cdots\times\mathbf{P}^{(1)}}} $$En la expresión anterior, $M$ simboliza el hecho de que está utilizando la propiedad de Markov para matrices de transición. Además, el símbolo $\times$ se refiere a multiplicación matricial y no a potencias.**Respuesta.** La propiedad de Markov para matrices de transición establece que la matriz de transición en el paso $k$ puede obtenerse multiplicando la matriz de transición en el primer paso $P^{(1)}$ consigo misma $k−1$ veces. Para mas detalle ver [aquí](https://es.wikipedia.org/wiki/Cadena_de_M%C3%A1rkov).A continuación se visualiza la matriz de probabilidades $P^{(47)}_M$$$ P^{(47)}_M = \begin{bmatrix} 0.5925 & 0.4075\\ 0.5925 & 0.4075 \end{bmatrix}$$De lo anterior se puede afirmar que para el individuo 83 al completar una tarea repetitiva:- La probabilidad de que el estado en el siguiente intento (paso $48$) sea 0 dado que el estado actual (paso $47$) es 0 ($P(47 = 0∣s=0)$)es del 59,25%;- La probabilidad de que el estado en el siguiente intento (paso $48$) sea 1 dado que el estado actual (paso $47$) es 0 ($P(47=1∣s=0)$) es del 40,75%;- La probabilidad de que el estado en el siguiente intento (paso $48$) sea 0 dado que el estado actual (paso $47$) es 1 ($P(47=0∣s=1)$) es del 59,25%;- La probabilidad de que el estado en el siguiente intento (paso $48$) sea 1 dado que el estado actual (paso $47$) es 1 ($P(47=1∣s=1)$) es del 40,75%.```{r, message=FALSE, warning=FALSE}k <- nchar(df_respuestas[1, "respuesta"])k# Función para construir la matriz de transición en el paso kp_k_matriz <- function(P1, k) { # Inicializar la matriz de transición en el paso k P_k <- P1 # Realizar la multiplicación matricial de P1 k-1 veces for (i in 1:(k - 1)) { P_k <- P_k %*% P1 } return(P_k)}``````{r, message=FALSE, warning=FALSE}p_k_matriz_i_83 <- p_k_matriz(matriz_i_83,k)```### P5Calcule $\mathbf{P}^{(k)}$ como $P(s+k = j | s = i)$ para $k=\{1,2,3,4\}$. Use una prueba $\chi^2$ para tablas de contingencia y compare estos resultados con $\mathbf{P}^{(k)}_M$. Concluya.**Respuesta.** *Aquí escribe la respuesta*.A continuación se describe código con función para creación de tablas de contingencia.```{r, message=FALSE, warning=FALSE}# Función para generar la tabla de contingenciac_tabla <- function(P) { n <- nrow(P) table_values <- c(P[1, 1], P[1, 2], P[2, 1], P[2, 2]) c_tabla <- matrix(table_values, nrow = 2, byrow = TRUE) rownames(c_tabla) <- c("s = 0", "s = 1") colnames(c_tabla) <- c("s+k = 0", "s+k = 1") return(c_tabla)}```Se calcula la matriz de probabilidad para el individuo $83$ para $k=\{1,2,3,4\}$ y se generan tablas de contingencia.```{r, message=FALSE, warning=FALSE}p_k_m_1 <- p_k_matriz(matriz_i_83,1)p_k_m_2 <-p_k_matriz(matriz_i_83,2)p_k_m_3 <-p_k_matriz(matriz_i_83,3)p_k_m_4 <-p_k_matriz(matriz_i_83,4)c_tabla1 <- c_tabla(p_k_m_1)c_tabla2 <- c_tabla(p_k_m_2)c_tabla3 <- c_tabla(p_k_m_3)c_tabla4 <-c_tabla(p_k_m_4)```##### Tabla de contingencia para $k=1$ ```{r, message=FALSE, warning=FALSE}c_tabla1```##### Tabla de contingencia para $k=2$ ```{r, message=FALSE, warning=FALSE}c_tabla2```##### Tabla de contingencia para $k=3$ ```{r, message=FALSE, warning=FALSE}c_tabla3```##### Tabla de contingencia para $k=4$ ```{r, message=FALSE, warning=FALSE}c_tabla4```Se calcula la matriz de probabilidad de acuerdo a lo establecido por la cadena de Markov para el individuo $83$ para $k=\{1,2,3,4\}$ y se generan tablas de contingencia.```{r, message=FALSE, warning=FALSE}# Paso 2: Calcular P^(k)_M manualmenteP_k1_M <- matriz_i_83P_k2_M <- matriz_i_83 %*% matriz_i_83P_k3_M <- matriz_i_83 %*% matriz_i_83 %*% matriz_i_83P_k4_M <- matriz_i_83 %*% matriz_i_83 %*% matriz_i_83 %*% matriz_i_83c_tabla1_k1M <- c_tabla(P_k1_M)c_tabla1_k2M <- c_tabla(P_k2_M)c_tabla1_k3M <- c_tabla(P_k3_M)c_tabla1_k4M <- c_tabla(P_k4_M)```##### Tabla de contingencia para $k=1$ ```{r, message=FALSE, warning=FALSE}c_tabla1_k1M```##### Tabla de contingencia para $k=2$ ```{r, message=FALSE, warning=FALSE}c_tabla1_k2M```##### Tabla de contingencia para $k=3$ ```{r, message=FALSE, warning=FALSE}c_tabla1_k3M```##### Tabla de contingencia para $k=4$ ```{r, message=FALSE, warning=FALSE}c_tabla1_k4M```Use una prueba $\chi^2$ para comparar las matrices de probabilidades $P^{(k)}$ y $P^{(k)}_M$```{r, message=FALSE, warning=FALSE}# Realiza la prueba de chi-cuadradochi_sq_test_1 <- chisq.test(c_tabla1, p = c_tabla1_k1M)chi_sq_test_2 <- chisq.test(c_tabla2, p = c_tabla1_k2M)chi_sq_test_3 <- chisq.test(c_tabla3, p = c_tabla1_k3M)chi_sq_test_4 <- chisq.test(c_tabla4, p = c_tabla1_k4M)chi_sq_test_1chi_sq_test_1chi_sq_test_3chi_sq_test_4```Se plantea la siguiente hipotesis para comparar las matrices de probabilidades $P^{(k)}$ y $P^{(k)}_M$$$ H_0 : P^{(k)} = P^{(k)}_M \space \mbox{Vs} \space H_1: P^{(k)} \neq P^{(k)}_M $$De los resultados obtenidos anteriormente se puede inferir no hay suficiente evidencia para rechazar la hipótesis nula, lo que sugiere que las matrices de probabilidades $\mathbf{P}^{(k)}$ y $\mathbf{P}^{(k)}_M$ son similares.