diff --git a/assignment/03-practico.qmd b/assignment/03-practico.qmd index 762e281..fe7cc39 100644 --- a/assignment/03-practico.qmd +++ b/assignment/03-practico.qmd @@ -1,6 +1,6 @@ --- title: "Práctica 3. Procesamiento, limpieza y manipulación de datos en R" -date: "2023-05-11" +date: "2024-05-11" lang: es output: number_sections: true @@ -404,7 +404,7 @@ select(proc_elsoc, ingreso, ingreso_minimo) #veamosla! Este último paso es bastante sencillo, solo debemos especificar la base que queremos guadar y su ruta: ```{r collapse=FALSE} -saveRDS(proc_elsoc, file = "output/datos_proc.Rdata") +save(proc_elsoc,file="output/proc_elsoc.Rdata") ``` diff --git a/assignment/04-practico.qmd b/assignment/04-practico.qmd index 78a3961..deaa060 100644 --- a/assignment/04-practico.qmd +++ b/assignment/04-practico.qmd @@ -1,6 +1,6 @@ --- title: "Práctica 4. Análisis descriptivo de datos en R" -date: "2024-05-05" +date: "2024-05-15" lang: es output: number_sections: true @@ -75,7 +75,6 @@ En este práctico utilizaremos los siguientes paquetes: 6. `sjPlot`: para tablas cruzadas o de contingencia - ```{r echo=TRUE} pacman::p_load(tidyverse, # colección de paquetes para manipulación de datos dplyr, # para manipular datos @@ -83,7 +82,6 @@ pacman::p_load(tidyverse, # colección de paquetes para manipulación de datos sjmisc, # para analizar datos sjPlot) # para tablas de contingencia - options(scipen = 999) # para desactivar notacion cientifica rm(list = ls()) # para limpiar el entorno de trabajo ``` @@ -93,17 +91,20 @@ rm(list = ls()) # para limpiar el entorno de trabajo Usamos los datos creados en el procesamiento que se encuentran guardados en la carpeta output. ```{r collapse=FALSE} -datos_proc <- readRDS("output/datos_proc.Rdata") +load("output/proc_elsoc.Rdata") ``` +```{r eval=FALSE} +load(url("https://github.com/cursos-metodos-facso/descriptiva/raw/main/assignment/output/proc_elsoc.Rdata")) +``` ## 3 Explorar datos ```{r eval = F} -View(datos_proc) # Ver datos -names(datos_proc) # Nombre de columnas -dim(datos_proc) # Dimensiones -str(datos_proc) # Estructura de los datos (las clases y categorias de repuesta) +View(proc_elsoc) # Ver datos +names(proc_elsoc) # Nombre de columnas +dim(proc_elsoc) # Dimensiones +str(proc_elsoc) # Estructura de los datos (las clases y categorias de repuesta) ``` En este caso, nuestra base de datos procesada tiene 496 casos y 9 variables. @@ -120,19 +121,18 @@ Cuando tenemos variables catégoricas, sean nominales u ordinales, podemos utili Para las variables nominales podemos usar tablas de frecuencias absolutas y relativas, y con ellas conocer la moda, es dedir, el valor con mayor cantidad de observaciones. Para ello, una manera sencilla de hacerlo es mediante la función `table` de R. ```{r eval=TRUE, collapse=FALSE} -table(datos_proc$sexo) +table(proc_elsoc$sexo) -table(datos_proc$ingreso_minimo) +table(proc_elsoc$ingreso_minimo) -table(datos_proc$autor_democ) +table(proc_elsoc$autor_democ) ``` Lo anterior nos entrega la frecuencia absoluta de las variables. Con ello, podemos observar que, en cuanto la preferencias entre autoritarismo y democracia, la mayoría de nuestros casos se concentran en "La democracia es preferible a cualquier otra forma de gobierno". Para conocer la frecuencia relativa o porcentual de estas podemos utilizar el comando `prop.table`. ```{r eval=TRUE, include=TRUE, collapse=FALSE} -(freq_table1 <-table(datos_proc$autor_democ)) +(freq_table1 <-table(proc_elsoc$autor_democ)) prop.table(freq_table1)*100 - ``` Así, podemos sostener que un 57,9% de los casos concideran que la democracia es preferible a cualquier otra forma de gobierno. @@ -141,7 +141,7 @@ Así, podemos sostener que un 57,9% de los casos concideran que la democracia es Mientras que si trabajamos con variables ordinales, podemos usar también la frecuencia acumulada: ```{r eval=TRUE, include=TRUE, collapse=FALSE} -(freq_table2 <- table(datos_proc$tramo_ingreso)) +(freq_table2 <- table(proc_elsoc$tramo_ingreso)) (freq_table3 <- prop.table(freq_table2)*100) cumsum(freq_table3) @@ -153,7 +153,7 @@ A partir de este estadístico, podemos ver que un 55% de los casos se ubican deb También podemos unir todas estas frecuencias en una sola tabla: ```{r eval=TRUE, include=TRUE, collapse=FALSE} -tbl3 <- table(datos_proc$tramo_ingreso) +tbl3 <- table(proc_elsoc$tramo_ingreso) cbind(Freq=tbl3, relat = prop.table(tbl3)*100, Cum = cumsum(tbl3)) ``` @@ -162,7 +162,7 @@ Otra manera de calcular frecuencias (absolutas, relativas y acumuladas) en R, es ```{r eval=TRUE, include=TRUE, collapse=FALSE} -sjmisc::frq(datos_proc$tramo_ingreso) +sjmisc::frq(proc_elsoc$tramo_ingreso) ``` @@ -172,17 +172,17 @@ También podemos cruzar dos variables mediante las llamadas tablas de contingenc ```{r eval=TRUE, include=TRUE, collapse=FALSE} -sjt.xtab(datos_proc$sexo, datos_proc$tramo_edad) +sjt.xtab(proc_elsoc$sexo, proc_elsoc$tramo_edad) -sjt.xtab(datos_proc$sexo, datos_proc$tramo_edad, +sjt.xtab(proc_elsoc$sexo, proc_elsoc$tramo_edad, show.cell.prc = TRUE, #fila y columna show.summary = FALSE) -sjt.xtab(datos_proc$sexo, datos_proc$tramo_edad, +sjt.xtab(proc_elsoc$sexo, proc_elsoc$tramo_edad, show.row.prc = TRUE, #solo fila show.summary = FALSE) -sjt.xtab(datos_proc$sexo, datos_proc$tramo_edad, +sjt.xtab(proc_elsoc$sexo, proc_elsoc$tramo_edad, show.col.prc=TRUE, #solo columna show.summary=FALSE) @@ -219,7 +219,7 @@ En R existen distintas formas de cálcular este tipo de estadísticos descriptiv Podemos obtener rapidamente un resumen de los datos con la funcion `summary` de R ```{r eval=TRUE} -summary(datos_proc$ingreso) +summary(proc_elsoc$ingreso) ``` Con esto podemos ver que el promedio o media aritmética del ingreso individual de los entrevistados de nuestra base es de $679.514, mientras que la mediana es de 500.000 pesos. @@ -232,7 +232,7 @@ Sin embargo, aunque es informativo, no nos entrega toda la información que quis ```{r eval=TRUE} -psych::describe(datos_proc$ingreso, +psych::describe(proc_elsoc$ingreso, quant = c(.25,.75), IQR = T) @@ -255,7 +255,7 @@ Otra manera de obtener todos los estadísticos que necesitamos es utilizando `dp ```{r eval=TRUE} -datos_proc %>% +proc_elsoc %>% summarise(media = mean(ingreso), mediana = median(ingreso), q1 = quantile(ingreso, probs = .25), diff --git a/assignment/output/proc_elsoc.Rdata b/assignment/output/proc_elsoc.Rdata new file mode 100644 index 0000000..3e9c776 Binary files /dev/null and b/assignment/output/proc_elsoc.Rdata differ diff --git a/docs/404.html b/docs/404.html index d956ac2..956d408 100644 --- a/docs/404.html +++ b/docs/404.html @@ -2,7 +2,7 @@ - + @@ -47,13 +47,7 @@ "collapse-after": 3, "panel-placement": "end", "type": "overlay", - "limit": 50, - "keyboard-shortcut": [ - "f", - "/", - "s" - ], - "show-item-context": false, + "limit": 20, "language": { "search-no-results-text": "No results", "search-matching-documents-text": "matching documents", @@ -62,7 +56,6 @@ "search-more-match-text": "more match in this document", "search-more-matches-text": "more matches in this document", "search-clear-button-title": "Clear", - "search-text-placeholder": "", "search-detached-cancel-button-title": "Cancel", "search-submit-button-title": "Submit", "search-label": "Search" @@ -73,7 +66,7 @@ - + @@ -91,9 +84,9 @@
-
@@ -163,16 +156,14 @@

Page Not Found

- -

OH NO! The page you were looking for isn’t here!

-

+

@@ -263,27 +254,10 @@

Page Not Found

// clear code selection e.clearSelection(); }); - var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//); - var mailtoRegex = new RegExp(/^mailto:/); - var filterRegex = new RegExp("https:\/\/descriptiva-2024\.netlify\.app"); - var isInternal = (href) => { - return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href); - } - // Inspect non-navigation links and adorn them if external - var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool)'); - for (var i=0; iPage Not Found interactive: true, interactiveBorder: 10, theme: 'quarto', - placement: 'bottom-start', + placement: 'bottom-start' }; - if (contentFn) { - config.content = contentFn; - } - if (onTriggerFn) { - config.onTrigger = onTriggerFn; - } - if (onUntriggerFn) { - config.onUntrigger = onUntriggerFn; - } window.tippy(el, config); } const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]'); @@ -315,130 +280,7 @@

Page Not Found

try { href = new URL(href).hash; } catch {} const id = href.replace(/^#\/?/, ""); const note = window.document.getElementById(id); - if (note) { - return note.innerHTML; - } else { - return ""; - } - }); - } - const xrefs = window.document.querySelectorAll('a.quarto-xref'); - const processXRef = (id, note) => { - // Strip column container classes - const stripColumnClz = (el) => { - el.classList.remove("page-full", "page-columns"); - if (el.children) { - for (const child of el.children) { - stripColumnClz(child); - } - } - } - stripColumnClz(note) - if (id === null || id.startsWith('sec-')) { - // Special case sections, only their first couple elements - const container = document.createElement("div"); - if (note.children && note.children.length > 2) { - container.appendChild(note.children[0].cloneNode(true)); - for (let i = 1; i < note.children.length; i++) { - const child = note.children[i]; - if (child.tagName === "P" && child.innerText === "") { - continue; - } else { - container.appendChild(child.cloneNode(true)); - break; - } - } - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(container); - } - return container.innerHTML - } else { - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(note); - } - return note.innerHTML; - } - } else { - // Remove any anchor links if they are present - const anchorLink = note.querySelector('a.anchorjs-link'); - if (anchorLink) { - anchorLink.remove(); - } - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(note); - } - // TODO in 1.5, we should make sure this works without a callout special case - if (note.classList.contains("callout")) { - return note.outerHTML; - } else { - return note.innerHTML; - } - } - } - for (var i=0; i res.text()) - .then(html => { - const parser = new DOMParser(); - const htmlDoc = parser.parseFromString(html, "text/html"); - const note = htmlDoc.getElementById(id); - if (note !== null) { - const html = processXRef(id, note); - instance.setContent(html); - } - }).finally(() => { - instance.enable(); - instance.show(); - }); - } - } else { - // See if we can fetch a full url (with no hash to target) - // This is a special case and we should probably do some content thinning / targeting - fetch(url) - .then(res => res.text()) - .then(html => { - const parser = new DOMParser(); - const htmlDoc = parser.parseFromString(html, "text/html"); - const note = htmlDoc.querySelector('main.content'); - if (note !== null) { - // This should only happen for chapter cross references - // (since there is no id in the URL) - // remove the first header - if (note.children.length > 0 && note.children[0].tagName === "HEADER") { - note.children[0].remove(); - } - const html = processXRef(null, note); - instance.setContent(html); - } - }).finally(() => { - instance.enable(); - instance.show(); - }); - } - }, function(instance) { + return note.innerHTML; }); } let selectedAnnoteEl; @@ -482,7 +324,6 @@

Page Not Found

} div.style.top = top - 2 + "px"; div.style.height = height + 4 + "px"; - div.style.left = 0; let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter"); if (gutterDiv === null) { gutterDiv = window.document.createElement("div"); @@ -508,32 +349,6 @@

Page Not Found

}); selectedAnnoteEl = undefined; }; - // Handle positioning of the toggle - window.addEventListener( - "resize", - throttle(() => { - elRect = undefined; - if (selectedAnnoteEl) { - selectCodeLines(selectedAnnoteEl); - } - }, 10) - ); - function throttle(fn, ms) { - let throttle = false; - let timer; - return (...args) => { - if(!throttle) { // first call gets through - fn.apply(this, args); - throttle = true; - } else { // all the others get throttled - if(timer) clearTimeout(timer); // cancel #2 - timer = setTimeout(() => { - fn.apply(this, args); - timer = throttle = false; - }, ms); - } - }; - } // Attach click handler to the DT const annoteDls = window.document.querySelectorAll('dt[data-target-cell]'); for (const annoteDlNode of annoteDls) { @@ -596,19 +411,14 @@

Page Not Found

- \ No newline at end of file diff --git a/docs/assignment/01-practico.html b/docs/assignment/01-practico.html index 12c4cd1..7397262 100644 --- a/docs/assignment/01-practico.html +++ b/docs/assignment/01-practico.html @@ -2,7 +2,7 @@ - + @@ -47,13 +47,7 @@ "collapse-after": 3, "panel-placement": "end", "type": "overlay", - "limit": 50, - "keyboard-shortcut": [ - "f", - "/", - "s" - ], - "show-item-context": false, + "limit": 20, "language": { "search-no-results-text": "Sin resultados", "search-matching-documents-text": "documentos encontrados", @@ -62,7 +56,6 @@ "search-more-match-text": "resultado adicional en este documento", "search-more-matches-text": "resultados adicionales en este documento", "search-clear-button-title": "Borrar", - "search-text-placeholder": "", "search-detached-cancel-button-title": "Cancelar", "search-submit-button-title": "Enviar", "search-label": "Buscar" @@ -72,7 +65,7 @@ - + @@ -89,9 +82,9 @@
-
-
- \ No newline at end of file diff --git a/docs/assignment/02-practico.html b/docs/assignment/02-practico.html index 9e5cfdd..adf943c 100644 --- a/docs/assignment/02-practico.html +++ b/docs/assignment/02-practico.html @@ -2,7 +2,7 @@ - + @@ -22,7 +22,7 @@ } /* CSS for syntax highlighting */ pre > code.sourceCode { white-space: pre; position: relative; } -pre > code.sourceCode > span { line-height: 1.25; } +pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } pre > code.sourceCode > span:empty { height: 1.2em; } .sourceCode { overflow: visible; } code.sourceCode > span { color: inherit; text-decoration: inherit; } @@ -81,13 +81,7 @@ "collapse-after": 3, "panel-placement": "end", "type": "overlay", - "limit": 50, - "keyboard-shortcut": [ - "f", - "/", - "s" - ], - "show-item-context": false, + "limit": 20, "language": { "search-no-results-text": "Sin resultados", "search-matching-documents-text": "documentos encontrados", @@ -96,7 +90,6 @@ "search-more-match-text": "resultado adicional en este documento", "search-more-matches-text": "resultados adicionales en este documento", "search-clear-button-title": "Borrar", - "search-text-placeholder": "", "search-detached-cancel-button-title": "Cancelar", "search-submit-button-title": "Enviar", "search-label": "Buscar" @@ -107,7 +100,7 @@ - + @@ -125,9 +118,9 @@
-
-
- \ No newline at end of file diff --git a/docs/assignment/03-practico.html b/docs/assignment/03-practico.html index cc64c8c..490e7c0 100644 --- a/docs/assignment/03-practico.html +++ b/docs/assignment/03-practico.html @@ -2,7 +2,7 @@ - + @@ -22,7 +22,7 @@ } /* CSS for syntax highlighting */ pre > code.sourceCode { white-space: pre; position: relative; } -pre > code.sourceCode > span { line-height: 1.25; } +pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } pre > code.sourceCode > span:empty { height: 1.2em; } .sourceCode { overflow: visible; } code.sourceCode > span { color: inherit; text-decoration: inherit; } @@ -81,13 +81,7 @@ "collapse-after": 3, "panel-placement": "end", "type": "overlay", - "limit": 50, - "keyboard-shortcut": [ - "f", - "/", - "s" - ], - "show-item-context": false, + "limit": 20, "language": { "search-no-results-text": "Sin resultados", "search-matching-documents-text": "documentos encontrados", @@ -96,7 +90,6 @@ "search-more-match-text": "resultado adicional en este documento", "search-more-matches-text": "resultados adicionales en este documento", "search-clear-button-title": "Borrar", - "search-text-placeholder": "", "search-detached-cancel-button-title": "Cancelar", "search-submit-button-title": "Enviar", "search-label": "Buscar" @@ -106,7 +99,7 @@ - + @@ -123,9 +116,9 @@
-
-

2 Importar datos

Usamos los datos creados en el procesamiento que se encuentran guardados en la carpeta output.

-
datos_proc <- readRDS("output/datos_proc.Rdata")
+
load("output/proc_elsoc.Rdata")
+
+
+
load(url("https://github.com/cursos-metodos-facso/descriptiva/raw/main/assignment/output/proc_elsoc.Rdata"))

3 Explorar datos

-
View(datos_proc) # Ver datos
-names(datos_proc) # Nombre de columnas
-dim(datos_proc) # Dimensiones
-str(datos_proc) # Estructura de los datos (las clases y categorias de repuesta)
+
View(proc_elsoc) # Ver datos
+names(proc_elsoc) # Nombre de columnas
+dim(proc_elsoc) # Dimensiones
+str(proc_elsoc) # Estructura de los datos (las clases y categorias de repuesta)

En este caso, nuestra base de datos procesada tiene 496 casos y 9 variables.

@@ -377,19 +371,19 @@

4.1.1 Frecuencias

a) Absolutas y relativas

Para las variables nominales podemos usar tablas de frecuencias absolutas y relativas, y con ellas conocer la moda, es dedir, el valor con mayor cantidad de observaciones. Para ello, una manera sencilla de hacerlo es mediante la función table de R.

-
table(datos_proc$sexo)
+
table(proc_elsoc$sexo)

  Femenino Masculino 
       277       219 
-
table(datos_proc$ingreso_minimo)
+
table(proc_elsoc$ingreso_minimo)

 debajo minimo  sobre minimo 
           211           285 
-
table(datos_proc$autor_democ)
+
table(proc_elsoc$autor_democ)

           A la gente como uno, nos da lo mismo un regimen democratico que uno autoritario 
@@ -404,7 +398,7 @@ 
a) Absolutas y rel

Lo anterior nos entrega la frecuencia absoluta de las variables. Con ello, podemos observar que, en cuanto la preferencias entre autoritarismo y democracia, la mayoría de nuestros casos se concentran en “La democracia es preferible a cualquier otra forma de gobierno”. Para conocer la frecuencia relativa o porcentual de estas podemos utilizar el comando prop.table.

-
(freq_table1 <-table(datos_proc$autor_democ))
+
(freq_table1 <-table(proc_elsoc$autor_democ))

           A la gente como uno, nos da lo mismo un regimen democratico que uno autoritario 
@@ -416,7 +410,7 @@ 
a) Absolutas y rel Ninguna 35
-
prop.table(freq_table1)*100 
+
prop.table(freq_table1)*100 

           A la gente como uno, nos da lo mismo un regimen democratico que uno autoritario 
@@ -435,19 +429,19 @@ 
a) Absolutas y rel
b) Acumuladas

Mientras que si trabajamos con variables ordinales, podemos usar también la frecuencia acumulada:

-
(freq_table2 <- table(datos_proc$tramo_ingreso))
+
(freq_table2 <- table(proc_elsoc$tramo_ingreso))

 Tramo 1 Tramo 2 Tramo 3 Tramo 4 Tramo 5 
      77     198      80      60      81 
-
(freq_table3 <- prop.table(freq_table2)*100)
+
(freq_table3 <- prop.table(freq_table2)*100)

  Tramo 1  Tramo 2  Tramo 3  Tramo 4  Tramo 5 
 15.52419 39.91935 16.12903 12.09677 16.33065 
-
cumsum(freq_table3)
+
cumsum(freq_table3)
  Tramo 1   Tramo 2   Tramo 3   Tramo 4   Tramo 5 
  15.52419  55.44355  71.57258  83.66935 100.00000 
@@ -456,8 +450,8 @@
b) Acumuladas

A partir de este estadístico, podemos ver que un 55% de los casos se ubican debajo del tramo 2 de ingresos, lo cual en términos sustantivos señala que un 55% de las observaciones obtienen menos de $500.000 de ingresos mensuales.

También podemos unir todas estas frecuencias en una sola tabla:

-
tbl3 <- table(datos_proc$tramo_ingreso)
-cbind(Freq=tbl3, relat = prop.table(tbl3)*100, Cum = cumsum(tbl3))
+
tbl3 <- table(proc_elsoc$tramo_ingreso)
+cbind(Freq=tbl3, relat = prop.table(tbl3)*100, Cum = cumsum(tbl3))
        Freq    relat Cum
 Tramo 1   77 15.52419  77
@@ -469,7 +463,7 @@ 
b) Acumuladas

Otra manera de calcular frecuencias (absolutas, relativas y acumuladas) en R, es mediante la función frq() del paquete sjmisc, el cual entrega todo lo anterior con un solo comando.

-
sjmisc::frq(datos_proc$tramo_ingreso)
+
sjmisc::frq(proc_elsoc$tramo_ingreso)
x <character> 
 # total N=496 valid N=496 mean=2.74 sd=1.31
@@ -490,8 +484,9 @@ 
b) Acumuladas

4.1.2 Tablas de contingencia

También podemos cruzar dos variables mediante las llamadas tablas de contingencia o tablas cruzadas. Además de conocer la frecuencia absoluta en cada casilla, podemos también conocer la proporción o frecuencia relativa para cada casilla y el total de la filas y columnas.

-
sjt.xtab(datos_proc$sexo, datos_proc$tramo_edad)
+
sjt.xtab(proc_elsoc$sexo, proc_elsoc$tramo_edad)
+ @@ -533,11 +528,10 @@

4.1.2 Tablas de con

sexo
-
sjt.xtab(datos_proc$sexo, datos_proc$tramo_edad,
-         show.cell.prc = TRUE, #fila y columna
-         show.summary = FALSE) 
+
sjt.xtab(proc_elsoc$sexo, proc_elsoc$tramo_edad,
+         show.cell.prc = TRUE, #fila y columna
+         show.summary = FALSE) 
-
@@ -593,12 +587,10 @@

4.1.2 Tablas de con

-
-
sjt.xtab(datos_proc$sexo, datos_proc$tramo_edad,
-         show.row.prc = TRUE, #solo fila
-         show.summary = FALSE) 
+
sjt.xtab(proc_elsoc$sexo, proc_elsoc$tramo_edad,
+         show.row.prc = TRUE, #solo fila
+         show.summary = FALSE) 
-
@@ -654,12 +646,10 @@

4.1.2 Tablas de con

-
-
sjt.xtab(datos_proc$sexo, datos_proc$tramo_edad,
-         show.col.prc=TRUE, #solo columna
-         show.summary=FALSE) 
+
sjt.xtab(proc_elsoc$sexo, proc_elsoc$tramo_edad,
+         show.col.prc=TRUE, #solo columna
+         show.summary=FALSE) 
-
@@ -716,7 +706,6 @@

4.1.2 Tablas de con

-
@@ -751,7 +740,7 @@

a) Con summary

Podemos obtener rapidamente un resumen de los datos con la funcion summary de R

-
summary(datos_proc$ingreso)
+
summary(proc_elsoc$ingreso)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
       0  350000  500000  679514  800000 5000000 
@@ -764,9 +753,9 @@
a) Con summary<
b) Con psych
-
psych::describe(datos_proc$ingreso,
-                quant = c(.25,.75),
-                IQR = T)
+
psych::describe(proc_elsoc$ingreso,
+                quant = c(.25,.75),
+                IQR = T)
   vars   n     mean       sd median  trimmed    mad min     max   range skew
 X1    1 496 679514.1 611376.9 500000 572434.7 296520   0 5000000 5000000 3.01
@@ -784,15 +773,15 @@ 
b) Con psych
c) Con summarise de dplyr

Otra manera de obtener todos los estadísticos que necesitamos es utilizando dplyr. Aquí, le especificamos lo que requerimos, pero debemos saber bien cómo calcular tales medidas:

-
datos_proc %>% 
-  summarise(media = mean(ingreso),
-            mediana = median(ingreso),
-            q1 = quantile(ingreso, probs = .25),
-            q2 = quantile(ingreso, probs = .75),
-            rango = max(ingreso) - min(ingreso),
-            desviacion_estandar = sd(ingreso),
-            varianza = var(ingreso),
-            coef_variacion = sd(ingreso)/mean(ingreso))
+
proc_elsoc %>% 
+  summarise(media = mean(ingreso),
+            mediana = median(ingreso),
+            q1 = quantile(ingreso, probs = .25),
+            q2 = quantile(ingreso, probs = .75),
+            rango = max(ingreso) - min(ingreso),
+            desviacion_estandar = sd(ingreso),
+            varianza = var(ingreso),
+            coef_variacion = sd(ingreso)/mean(ingreso))
# A tibble: 1 × 8
     media mediana     q1    q2 rango desviacion_estandar varianza coef_variacion
@@ -896,27 +885,10 @@ 

Resumen

// clear code selection e.clearSelection(); }); - var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//); - var mailtoRegex = new RegExp(/^mailto:/); - var filterRegex = new RegExp("https:\/\/descriptiva-2024\.netlify\.app"); - var isInternal = (href) => { - return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href); - } - // Inspect non-navigation links and adorn them if external - var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool)'); - for (var i=0; iResumen
interactive: true, interactiveBorder: 10, theme: 'quarto', - placement: 'bottom-start', + placement: 'bottom-start' }; - if (contentFn) { - config.content = contentFn; - } - if (onTriggerFn) { - config.onTrigger = onTriggerFn; - } - if (onUntriggerFn) { - config.onUntrigger = onUntriggerFn; - } window.tippy(el, config); } const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]'); @@ -948,130 +911,7 @@

Resumen

try { href = new URL(href).hash; } catch {} const id = href.replace(/^#\/?/, ""); const note = window.document.getElementById(id); - if (note) { - return note.innerHTML; - } else { - return ""; - } - }); - } - const xrefs = window.document.querySelectorAll('a.quarto-xref'); - const processXRef = (id, note) => { - // Strip column container classes - const stripColumnClz = (el) => { - el.classList.remove("page-full", "page-columns"); - if (el.children) { - for (const child of el.children) { - stripColumnClz(child); - } - } - } - stripColumnClz(note) - if (id === null || id.startsWith('sec-')) { - // Special case sections, only their first couple elements - const container = document.createElement("div"); - if (note.children && note.children.length > 2) { - container.appendChild(note.children[0].cloneNode(true)); - for (let i = 1; i < note.children.length; i++) { - const child = note.children[i]; - if (child.tagName === "P" && child.innerText === "") { - continue; - } else { - container.appendChild(child.cloneNode(true)); - break; - } - } - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(container); - } - return container.innerHTML - } else { - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(note); - } - return note.innerHTML; - } - } else { - // Remove any anchor links if they are present - const anchorLink = note.querySelector('a.anchorjs-link'); - if (anchorLink) { - anchorLink.remove(); - } - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(note); - } - // TODO in 1.5, we should make sure this works without a callout special case - if (note.classList.contains("callout")) { - return note.outerHTML; - } else { - return note.innerHTML; - } - } - } - for (var i=0; i res.text()) - .then(html => { - const parser = new DOMParser(); - const htmlDoc = parser.parseFromString(html, "text/html"); - const note = htmlDoc.getElementById(id); - if (note !== null) { - const html = processXRef(id, note); - instance.setContent(html); - } - }).finally(() => { - instance.enable(); - instance.show(); - }); - } - } else { - // See if we can fetch a full url (with no hash to target) - // This is a special case and we should probably do some content thinning / targeting - fetch(url) - .then(res => res.text()) - .then(html => { - const parser = new DOMParser(); - const htmlDoc = parser.parseFromString(html, "text/html"); - const note = htmlDoc.querySelector('main.content'); - if (note !== null) { - // This should only happen for chapter cross references - // (since there is no id in the URL) - // remove the first header - if (note.children.length > 0 && note.children[0].tagName === "HEADER") { - note.children[0].remove(); - } - const html = processXRef(null, note); - instance.setContent(html); - } - }).finally(() => { - instance.enable(); - instance.show(); - }); - } - }, function(instance) { + return note.innerHTML; }); } let selectedAnnoteEl; @@ -1115,7 +955,6 @@

Resumen

} div.style.top = top - 2 + "px"; div.style.height = height + 4 + "px"; - div.style.left = 0; let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter"); if (gutterDiv === null) { gutterDiv = window.document.createElement("div"); @@ -1141,32 +980,6 @@

Resumen

}); selectedAnnoteEl = undefined; }; - // Handle positioning of the toggle - window.addEventListener( - "resize", - throttle(() => { - elRect = undefined; - if (selectedAnnoteEl) { - selectCodeLines(selectedAnnoteEl); - } - }, 10) - ); - function throttle(fn, ms) { - let throttle = false; - let timer; - return (...args) => { - if(!throttle) { // first call gets through - fn.apply(this, args); - throttle = true; - } else { // all the others get throttled - if(timer) clearTimeout(timer); // cancel #2 - timer = setTimeout(() => { - fn.apply(this, args); - timer = throttle = false; - }, ms); - } - }; - } // Attach click handler to the DT const annoteDls = window.document.querySelectorAll('dt[data-target-cell]'); for (const annoteDlNode of annoteDls) { @@ -1229,19 +1042,14 @@

Resumen

- \ No newline at end of file diff --git a/docs/assignment/05-practico.html b/docs/assignment/05-practico.html index ceca478..dd40ca1 100644 --- a/docs/assignment/05-practico.html +++ b/docs/assignment/05-practico.html @@ -2,7 +2,7 @@ - + @@ -22,7 +22,7 @@ } /* CSS for syntax highlighting */ pre > code.sourceCode { white-space: pre; position: relative; } -pre > code.sourceCode > span { line-height: 1.25; } +pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } pre > code.sourceCode > span:empty { height: 1.2em; } .sourceCode { overflow: visible; } code.sourceCode > span { color: inherit; text-decoration: inherit; } @@ -81,13 +81,7 @@ "collapse-after": 3, "panel-placement": "end", "type": "overlay", - "limit": 50, - "keyboard-shortcut": [ - "f", - "/", - "s" - ], - "show-item-context": false, + "limit": 20, "language": { "search-no-results-text": "Sin resultados", "search-matching-documents-text": "documentos encontrados", @@ -96,7 +90,6 @@ "search-more-match-text": "resultado adicional en este documento", "search-more-matches-text": "resultados adicionales en este documento", "search-clear-button-title": "Borrar", - "search-text-placeholder": "", "search-detached-cancel-button-title": "Cancelar", "search-submit-button-title": "Enviar", "search-label": "Buscar" @@ -107,7 +100,7 @@ - + @@ -125,9 +118,9 @@
-
@@ -220,7 +213,6 @@

Práctica 5. Repaso procesamiento y análisis de dat

-

Presentación

@@ -603,17 +595,51 @@

1 Cargar librerías dplyr, # para manipular datos psych, # para analizar datos crosstable, # para tablas de contingencia - sjmisc) # para analizar datos - -options(scipen = 999) # para desactivar notacion cientifica -rm(list = ls()) # para limpiar el entorno de trabajo

+ sjmisc) # para analizar datos
+
+
Installing package into 'C:/Users/danie/AppData/Local/R/win-library/4.3'
+(as 'lib' is unspecified)
+
+
+
also installing the dependencies 'triebeard', 'urltools', 'httpcode', 'crul', 'fontBitstreamVera', 'fontLiberation', 'gfonts', 'fontquiver', 'gdtools', 'flextable', 'officer'
+
+
+
Warning: unable to access index for repository http://www.stats.ox.ac.uk/pub/RWin/bin/windows/contrib/4.3:
+  no fue posible abrir la URL 'http://www.stats.ox.ac.uk/pub/RWin/bin/windows/contrib/4.3/PACKAGES'
+
+
+
package 'triebeard' successfully unpacked and MD5 sums checked
+package 'urltools' successfully unpacked and MD5 sums checked
+package 'httpcode' successfully unpacked and MD5 sums checked
+package 'crul' successfully unpacked and MD5 sums checked
+package 'fontBitstreamVera' successfully unpacked and MD5 sums checked
+package 'fontLiberation' successfully unpacked and MD5 sums checked
+package 'gfonts' successfully unpacked and MD5 sums checked
+package 'fontquiver' successfully unpacked and MD5 sums checked
+package 'gdtools' successfully unpacked and MD5 sums checked
+package 'flextable' successfully unpacked and MD5 sums checked
+package 'officer' successfully unpacked and MD5 sums checked
+package 'crosstable' successfully unpacked and MD5 sums checked
+
+The downloaded binary packages are in
+    C:\Users\danie\AppData\Local\Temp\RtmpwxogBi\downloaded_packages
+
+
+

+crosstable installed
+
+
+
Warning: package 'crosstable' was built under R version 4.3.3
+
+
options(scipen = 999) # para desactivar notacion cientifica
+rm(list = ls()) # para limpiar el entorno de trabajo

2 Importar datos

Usamos los datos creados en el procesamiento que se encuentran guardados en la carpeta output.

-
datos_proc <- readRDS("output/datos_proc.Rdata")
+
datos_proc <- readRDS("output/datos_proc.Rdata")
@@ -623,7 +649,7 @@

3.1. Frecuencias absolutas y relativas

Para las variables nominales podemos usar tablas de frecuencias absolutas y relativas, y con ellas conocer la moda, es dedcir, el valor con mayor cantidad de observaciones.

-
(freq_table1 <-table(datos_proc$altruismo))
+
(freq_table1 <-table(datos_proc$altruismo))

                                                Depende 
@@ -633,7 +659,7 @@ 

3.1. Fre La mayoria de las veces tratan de ayudar a los demas 80

-
prop.table(freq_table1)*100 
+
prop.table(freq_table1)*100 

                                                Depende 
@@ -650,25 +676,25 @@ 

3.1. Fre

3.2. Frecuencias acumuladas

Mientras que si trabajamos con variables ordinales, podemos usar también la frecuencia acumulada:

-
(freq_table2 <- table(datos_proc$tramo_ingreso))
+
(freq_table2 <- table(datos_proc$tramo_ingreso))

 Tramo 1 Tramo 2 Tramo 3 Tramo 4 Tramo 5 
      81     197     106      71      73 
-
(freq_table3 <- prop.table(freq_table2)*100)
+
(freq_table3 <- prop.table(freq_table2)*100)

  Tramo 1  Tramo 2  Tramo 3  Tramo 4  Tramo 5 
 15.34091 37.31061 20.07576 13.44697 13.82576 
-
cumsum(freq_table3)
+
cumsum(freq_table3)
  Tramo 1   Tramo 2   Tramo 3   Tramo 4   Tramo 5 
  15.34091  52.65152  72.72727  86.17424 100.00000 
-
tbl3 <- table(datos_proc$tramo_ingreso)
-cbind(Freq=tbl3, relat = prop.table(tbl3)*100, Cum = cumsum(tbl3))
+
tbl3 <- table(datos_proc$tramo_ingreso)
+cbind(Freq=tbl3, relat = prop.table(tbl3)*100, Cum = cumsum(tbl3))
        Freq    relat Cum
 Tramo 1   81 15.34091  81
@@ -680,7 +706,7 @@ 

3.2. Frecuencias ac

Otra manera de calcular frecuencias (absolutas, relativas y acumuladas) en R, es mediante la función frq() del paquete sjmisc.

-
sjmisc::frq(datos_proc$tramo_ingreso)
+
sjmisc::frq(datos_proc$tramo_ingreso)
x <character> 
 # total N=528 valid N=528 mean=2.73 sd=1.27
@@ -700,7 +726,7 @@ 

3.2. Frecuencias ac

3.3. Tablas de contingencia

También podemos cruzar dos variables mediante las llamadas tablas de contingencia o tablas cruzadas. Además de conocer la frecuencia absoluta en cada casilla, podemos también conocer la proporción o frecuencia relativa para cada casilla y el total de la filas y columnas.

-
crosstable(datos_proc, cols = sexo, by = tramo_edad)
+
crosstable(datos_proc, cols = sexo, by = tramo_edad)
# A tibble: 2 × 6
   .id   label variable  Adultos      `Adutos mayores` Jovenes    
@@ -708,7 +734,7 @@ 

3.3. Tablas de cont 1 sexo sexo Femenino 222 (75.00%) 44 (14.86%) 30 (10.14%) 2 sexo sexo Masculino 162 (69.83%) 57 (24.57%) 13 (5.60%)

-
crosstable(datos_proc, cols = sexo, by = tramo_edad, total = "both") #fila y columna
+
crosstable(datos_proc, cols = sexo, by = tramo_edad, total = "both") #fila y columna
# A tibble: 3 × 7
   .id   label variable  Adultos      `Adutos mayores` Jovenes     Total        
@@ -717,7 +743,7 @@ 

3.3. Tablas de cont 2 sexo sexo Masculino 162 (69.83%) 57 (24.57%) 13 (5.60%) 232 (43.94%) 3 sexo sexo Total 384 (72.73%) 101 (19.13%) 43 (8.14%) 528 (100.00%)

-
crosstable(datos_proc, cols = sexo, by = tramo_edad, total = "row") #solo fila
+
crosstable(datos_proc, cols = sexo, by = tramo_edad, total = "row") #solo fila
# A tibble: 2 × 7
   .id   label variable  Adultos      `Adutos mayores` Jovenes     Total       
@@ -725,7 +751,7 @@ 

3.3. Tablas de cont 1 sexo sexo Femenino 222 (75.00%) 44 (14.86%) 30 (10.14%) 296 (56.06%) 2 sexo sexo Masculino 162 (69.83%) 57 (24.57%) 13 (5.60%) 232 (43.94%)

-
crosstable(datos_proc, cols = sexo, by = tramo_edad, total = "column") #solo columna
+
crosstable(datos_proc, cols = sexo, by = tramo_edad, total = "column") #solo columna
# A tibble: 3 × 6
   .id   label variable  Adultos      `Adutos mayores` Jovenes    
@@ -747,23 +773,23 @@ 

-
psych::describe(datos_proc$edad)
+
psych::describe(datos_proc$edad)
   vars   n  mean    sd median trimmed   mad min max range skew kurtosis   se
 X1    1 528 47.01 12.15     47   46.95 14.83  25  84    59 0.08    -0.83 0.53
-
psych::describe(datos_proc$edad,
-                quant = c(.25,.75),
-                IQR = TRUE)
+
psych::describe(datos_proc$edad,
+                quant = c(.25,.75),
+                IQR = TRUE)
   vars   n  mean    sd median trimmed   mad min max range skew kurtosis   se
 X1    1 528 47.01 12.15     47   46.95 14.83  25  84    59 0.08    -0.83 0.53
    IQR Q0.25 Q0.75
 X1  19    38    57
-
psych::describe(datos_proc$ingreso,
-                quant = c(.25,.75),
-                IQR = T)
+
psych::describe(datos_proc$ingreso,
+                quant = c(.25,.75),
+                IQR = T)
   vars   n     mean       sd median  trimmed    mad min      max    range
 X1    1 528 689268.9 844589.1 500000 569325.5 296520   0 15000000 15000000
@@ -867,27 +893,10 @@ 

Segundo bloque

// clear code selection e.clearSelection(); }); - var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//); - var mailtoRegex = new RegExp(/^mailto:/); - var filterRegex = new RegExp("https:\/\/descriptiva-2024\.netlify\.app"); - var isInternal = (href) => { - return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href); - } - // Inspect non-navigation links and adorn them if external - var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool)'); - for (var i=0; iSegundo bloque

interactive: true, interactiveBorder: 10, theme: 'quarto', - placement: 'bottom-start', + placement: 'bottom-start' }; - if (contentFn) { - config.content = contentFn; - } - if (onTriggerFn) { - config.onTrigger = onTriggerFn; - } - if (onUntriggerFn) { - config.onUntrigger = onUntriggerFn; - } window.tippy(el, config); } const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]'); @@ -919,130 +919,7 @@

Segundo bloque

try { href = new URL(href).hash; } catch {} const id = href.replace(/^#\/?/, ""); const note = window.document.getElementById(id); - if (note) { - return note.innerHTML; - } else { - return ""; - } - }); - } - const xrefs = window.document.querySelectorAll('a.quarto-xref'); - const processXRef = (id, note) => { - // Strip column container classes - const stripColumnClz = (el) => { - el.classList.remove("page-full", "page-columns"); - if (el.children) { - for (const child of el.children) { - stripColumnClz(child); - } - } - } - stripColumnClz(note) - if (id === null || id.startsWith('sec-')) { - // Special case sections, only their first couple elements - const container = document.createElement("div"); - if (note.children && note.children.length > 2) { - container.appendChild(note.children[0].cloneNode(true)); - for (let i = 1; i < note.children.length; i++) { - const child = note.children[i]; - if (child.tagName === "P" && child.innerText === "") { - continue; - } else { - container.appendChild(child.cloneNode(true)); - break; - } - } - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(container); - } - return container.innerHTML - } else { - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(note); - } - return note.innerHTML; - } - } else { - // Remove any anchor links if they are present - const anchorLink = note.querySelector('a.anchorjs-link'); - if (anchorLink) { - anchorLink.remove(); - } - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(note); - } - // TODO in 1.5, we should make sure this works without a callout special case - if (note.classList.contains("callout")) { - return note.outerHTML; - } else { - return note.innerHTML; - } - } - } - for (var i=0; i res.text()) - .then(html => { - const parser = new DOMParser(); - const htmlDoc = parser.parseFromString(html, "text/html"); - const note = htmlDoc.getElementById(id); - if (note !== null) { - const html = processXRef(id, note); - instance.setContent(html); - } - }).finally(() => { - instance.enable(); - instance.show(); - }); - } - } else { - // See if we can fetch a full url (with no hash to target) - // This is a special case and we should probably do some content thinning / targeting - fetch(url) - .then(res => res.text()) - .then(html => { - const parser = new DOMParser(); - const htmlDoc = parser.parseFromString(html, "text/html"); - const note = htmlDoc.querySelector('main.content'); - if (note !== null) { - // This should only happen for chapter cross references - // (since there is no id in the URL) - // remove the first header - if (note.children.length > 0 && note.children[0].tagName === "HEADER") { - note.children[0].remove(); - } - const html = processXRef(null, note); - instance.setContent(html); - } - }).finally(() => { - instance.enable(); - instance.show(); - }); - } - }, function(instance) { + return note.innerHTML; }); } let selectedAnnoteEl; @@ -1086,7 +963,6 @@

Segundo bloque

} div.style.top = top - 2 + "px"; div.style.height = height + 4 + "px"; - div.style.left = 0; let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter"); if (gutterDiv === null) { gutterDiv = window.document.createElement("div"); @@ -1112,32 +988,6 @@

Segundo bloque

}); selectedAnnoteEl = undefined; }; - // Handle positioning of the toggle - window.addEventListener( - "resize", - throttle(() => { - elRect = undefined; - if (selectedAnnoteEl) { - selectCodeLines(selectedAnnoteEl); - } - }, 10) - ); - function throttle(fn, ms) { - let throttle = false; - let timer; - return (...args) => { - if(!throttle) { // first call gets through - fn.apply(this, args); - throttle = true; - } else { // all the others get throttled - if(timer) clearTimeout(timer); // cancel #2 - timer = setTimeout(() => { - fn.apply(this, args); - timer = throttle = false; - }, ms); - } - }; - } // Attach click handler to the DT const annoteDls = window.document.querySelectorAll('dt[data-target-cell]'); for (const annoteDlNode of annoteDls) { @@ -1200,19 +1050,14 @@

Segundo bloque

- \ No newline at end of file diff --git a/docs/assignment/06-practico.html b/docs/assignment/06-practico.html index 7a86bfb..2d59962 100644 --- a/docs/assignment/06-practico.html +++ b/docs/assignment/06-practico.html @@ -2,7 +2,7 @@ - + @@ -22,7 +22,7 @@ } /* CSS for syntax highlighting */ pre > code.sourceCode { white-space: pre; position: relative; } -pre > code.sourceCode > span { line-height: 1.25; } +pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } pre > code.sourceCode > span:empty { height: 1.2em; } .sourceCode { overflow: visible; } code.sourceCode > span { color: inherit; text-decoration: inherit; } @@ -81,13 +81,7 @@ "collapse-after": 3, "panel-placement": "end", "type": "overlay", - "limit": 50, - "keyboard-shortcut": [ - "f", - "/", - "s" - ], - "show-item-context": false, + "limit": 20, "language": { "search-no-results-text": "Sin resultados", "search-matching-documents-text": "documentos encontrados", @@ -96,7 +90,6 @@ "search-more-match-text": "resultado adicional en este documento", "search-more-matches-text": "resultados adicionales en este documento", "search-clear-button-title": "Borrar", - "search-text-placeholder": "", "search-detached-cancel-button-title": "Cancelar", "search-submit-button-title": "Enviar", "search-label": "Buscar" @@ -107,7 +100,7 @@ - + @@ -125,9 +118,9 @@
-
@@ -225,7 +218,6 @@

Práctica 6. Visualización de datos con R

-

Presentación

@@ -255,7 +247,7 @@

Cómo NO visuali
-

+

@@ -264,7 +256,7 @@

Cómo NO visuali
-

+

@@ -417,7 +409,7 @@

Visualización de datos con ggplot2

-

+

@@ -437,42 +429,26 @@

1. Diagrama de barras
ggplot(data = proc_cep, 
        mapping = aes(x = empleo)) # especificamos datos y mapping 

-
-
-

-
-
+

ggplot(data = proc_cep, 
        mapping = aes(x = empleo)) + # especificamos datos y mapping 
   geom_bar() # agregamos geometria o forma 
-
-
-

-
-
+

ggplot(data = proc_cep, 
        mapping = aes(x = empleo)) + # especificamos datos y mapping 
   geom_bar(color = "black", fill = "darkblue") # agregamos geometria y color y relleno
-
-
-

-
-
+

ggplot(data = proc_cep, 
        mapping = aes(x = empleo)) + # especificamos datos y mapping 
   geom_bar(color = "black", fill = "darkblue") + # agregamos geometria y color y relleno
   scale_y_continuous(limits = c(0,1000)) # agregamos escala en eje Y y ponemos limites minimos y maximos
-
-
-

-
-
+

ggplot(data = proc_cep, 
        mapping = aes(x = empleo)) + # especificamos datos y mapping 
@@ -483,11 +459,7 @@ 

1. Diagrama de barras y = "Frecuencia", caption = "Fuente: Elaboración propia en base a Encuesta CEP Diciembre 2019.") # agregamos titulo, nombres a los ejes y fuente

-
-
-

-
-
+

ggplot(data = proc_cep, 
        mapping = aes(x = empleo)) + # especificamos datos y mapping 
@@ -499,11 +471,7 @@ 

1. Diagrama de barras caption = "Fuente: Elaboración propia en base a Encuesta CEP Diciembre 2019.") +# agregamos titulo, nombres a los ejes y fuente geom_text(aes(label = ..count..), stat = "count", vjust = 1.5, colour = "white") # agregamos las freq de cada barra

-
-
-

-
-
+

¿Y podemos diferenciar por sexo en este mismo gráfico? Claro que sí, debemos indicar la variable que agrupa en el mapping o coordenadas mediante el argumento fill.

@@ -518,11 +486,7 @@

1. Diagrama de barras caption = "Fuente: Elaboración propia en base a Encuesta CEP Diciembre 2019.") +# agregamos titulo, nombres a los ejes y fuente geom_text(aes(label = ..count..), stat = "count", colour = "white", position = position_stack(.1)) # agregams freq de cada barra por grupo

-
-
-

-
-
+

Ahora tenemos un gráfico de barras apiladas según el sexo de los entrevistados, y dicha agrupación nos aparece como una leyenda en la parte izquierda del grafico con el nombre de los grupos.

@@ -538,11 +502,7 @@

1. Diagrama de barras geom_text(aes(label = ..count..), stat = "count", colour = "white", vjust = 1.5, position = position_dodge(.9)) # agregamos freq de cada barra por grupo

-
-
-

-
-
+

@@ -556,11 +516,7 @@

1. Diagrama de barras geom_text(aes(label = ..count..), stat = "count", colour = "white", vjust = 1.5, position = position_dodge(.9)) # agregamos freq de cada barra por grupo

-
-
-

-
-
+

@@ -575,11 +531,7 @@

2. Histogramas

`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
-
-
-

-
-
+

ggplot(data = proc_cep, 
        mapping = aes(x = edad)) + # especificamos datos y mapping 
@@ -592,11 +544,7 @@ 

2. Histogramas

`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
-
-
-

-
-
+

@@ -611,11 +559,7 @@

2. Histogramas

`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
-
-
-

-
-
+

@@ -631,11 +575,7 @@

3. Digrama de densidad y = "Frecuencia", caption = "Fuente: Elaboración propia en base a Encuesta CEP Diciembre 2019.") # agregamos titulo, nombres a los ejes y fuente
-
-
-

-
-
+

ggplot(data = proc_cep, 
        mapping = aes(x = satisfaccion)) + # especificamos datos y mapping 
@@ -645,11 +585,7 @@ 

3. Digrama de densidad y = "Frecuencia", caption = "Fuente: Elaboración propia en base a Encuesta CEP Diciembre 2019.") # agregamos titulo, nombres a los ejes y fuente

-
-
-

-
-
+

@@ -664,11 +600,7 @@

4. Gráficos de y = "Edad", caption = "Fuente: Elaboración propia en base a Encuesta CEP Diciembre 2019.") # agregamos titulo, nombres a los ejes y fuente
-
-
-

-
-
+

ggplot(data = proc_cep, 
        mapping = aes(y = satisfaccion)) + # especificamos datos y mapping 
@@ -677,11 +609,7 @@ 

4. Gráficos de y = "Satisfaccion", caption = "Fuente: Elaboración propia en base a Encuesta CEP Diciembre 2019.") # agregamos titulo, nombres a los ejes y fuente

-
-
-

-
-
+

Ahora, segmentemos en un grafico de cajas la variable satisfaccion por tramo etario.

@@ -693,11 +621,7 @@

4. Gráficos de y = "Satisfaccion", caption = "Fuente: Elaboración propia en base a Encuesta CEP Diciembre 2019.") # agregamos titulo, nombres a los ejes y fuente
-
-
-

-
-
+

@@ -712,11 +636,7 @@

5. Graficos de violin y = "Satisfaccion", caption = "Fuente: Elaboración propia en base a Encuesta CEP Diciembre 2019.") # agregamos titulo, nombres a los ejes y fuente
-
-
-

-
-
+

@@ -734,11 +654,7 @@

6. Grilla de gráficos y = "Frecuencia", caption = "Fuente: Elaboración propia en base a Encuesta CEP Diciembre 2019.") # agregamos titulo, nombres a los ejes y fuente
-
-
-

-
-
+

@@ -838,27 +754,10 @@

Video tutorial

// clear code selection e.clearSelection(); }); - var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//); - var mailtoRegex = new RegExp(/^mailto:/); - var filterRegex = new RegExp("https:\/\/descriptiva-2024\.netlify\.app"); - var isInternal = (href) => { - return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href); - } - // Inspect non-navigation links and adorn them if external - var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool)'); - for (var i=0; iVideo tutorial interactive: true, interactiveBorder: 10, theme: 'quarto', - placement: 'bottom-start', + placement: 'bottom-start' }; - if (contentFn) { - config.content = contentFn; - } - if (onTriggerFn) { - config.onTrigger = onTriggerFn; - } - if (onUntriggerFn) { - config.onUntrigger = onUntriggerFn; - } window.tippy(el, config); } const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]'); @@ -890,130 +780,7 @@

Video tutorial

try { href = new URL(href).hash; } catch {} const id = href.replace(/^#\/?/, ""); const note = window.document.getElementById(id); - if (note) { - return note.innerHTML; - } else { - return ""; - } - }); - } - const xrefs = window.document.querySelectorAll('a.quarto-xref'); - const processXRef = (id, note) => { - // Strip column container classes - const stripColumnClz = (el) => { - el.classList.remove("page-full", "page-columns"); - if (el.children) { - for (const child of el.children) { - stripColumnClz(child); - } - } - } - stripColumnClz(note) - if (id === null || id.startsWith('sec-')) { - // Special case sections, only their first couple elements - const container = document.createElement("div"); - if (note.children && note.children.length > 2) { - container.appendChild(note.children[0].cloneNode(true)); - for (let i = 1; i < note.children.length; i++) { - const child = note.children[i]; - if (child.tagName === "P" && child.innerText === "") { - continue; - } else { - container.appendChild(child.cloneNode(true)); - break; - } - } - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(container); - } - return container.innerHTML - } else { - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(note); - } - return note.innerHTML; - } - } else { - // Remove any anchor links if they are present - const anchorLink = note.querySelector('a.anchorjs-link'); - if (anchorLink) { - anchorLink.remove(); - } - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(note); - } - // TODO in 1.5, we should make sure this works without a callout special case - if (note.classList.contains("callout")) { - return note.outerHTML; - } else { - return note.innerHTML; - } - } - } - for (var i=0; i res.text()) - .then(html => { - const parser = new DOMParser(); - const htmlDoc = parser.parseFromString(html, "text/html"); - const note = htmlDoc.getElementById(id); - if (note !== null) { - const html = processXRef(id, note); - instance.setContent(html); - } - }).finally(() => { - instance.enable(); - instance.show(); - }); - } - } else { - // See if we can fetch a full url (with no hash to target) - // This is a special case and we should probably do some content thinning / targeting - fetch(url) - .then(res => res.text()) - .then(html => { - const parser = new DOMParser(); - const htmlDoc = parser.parseFromString(html, "text/html"); - const note = htmlDoc.querySelector('main.content'); - if (note !== null) { - // This should only happen for chapter cross references - // (since there is no id in the URL) - // remove the first header - if (note.children.length > 0 && note.children[0].tagName === "HEADER") { - note.children[0].remove(); - } - const html = processXRef(null, note); - instance.setContent(html); - } - }).finally(() => { - instance.enable(); - instance.show(); - }); - } - }, function(instance) { + return note.innerHTML; }); } let selectedAnnoteEl; @@ -1057,7 +824,6 @@

Video tutorial

} div.style.top = top - 2 + "px"; div.style.height = height + 4 + "px"; - div.style.left = 0; let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter"); if (gutterDiv === null) { gutterDiv = window.document.createElement("div"); @@ -1083,32 +849,6 @@

Video tutorial

}); selectedAnnoteEl = undefined; }; - // Handle positioning of the toggle - window.addEventListener( - "resize", - throttle(() => { - elRect = undefined; - if (selectedAnnoteEl) { - selectCodeLines(selectedAnnoteEl); - } - }, 10) - ); - function throttle(fn, ms) { - let throttle = false; - let timer; - return (...args) => { - if(!throttle) { // first call gets through - fn.apply(this, args); - throttle = true; - } else { // all the others get throttled - if(timer) clearTimeout(timer); // cancel #2 - timer = setTimeout(() => { - fn.apply(this, args); - timer = throttle = false; - }, ms); - } - }; - } // Attach click handler to the DT const annoteDls = window.document.querySelectorAll('dt[data-target-cell]'); for (const annoteDlNode of annoteDls) { @@ -1171,19 +911,14 @@

Video tutorial

- \ No newline at end of file diff --git a/docs/assignment/06-practico_files/figure-html/unnamed-chunk-12-1.png b/docs/assignment/06-practico_files/figure-html/unnamed-chunk-12-1.png index 4516e4d..6390f76 100644 Binary files a/docs/assignment/06-practico_files/figure-html/unnamed-chunk-12-1.png and b/docs/assignment/06-practico_files/figure-html/unnamed-chunk-12-1.png differ diff --git a/docs/assignment/06-practico_files/figure-html/unnamed-chunk-13-1.png b/docs/assignment/06-practico_files/figure-html/unnamed-chunk-13-1.png index 9ac7469..d7f29bf 100644 Binary files a/docs/assignment/06-practico_files/figure-html/unnamed-chunk-13-1.png and b/docs/assignment/06-practico_files/figure-html/unnamed-chunk-13-1.png differ diff --git a/docs/assignment/06-practico_files/figure-html/unnamed-chunk-14-1.png b/docs/assignment/06-practico_files/figure-html/unnamed-chunk-14-1.png index 08e2ad3..7e642e0 100644 Binary files a/docs/assignment/06-practico_files/figure-html/unnamed-chunk-14-1.png and b/docs/assignment/06-practico_files/figure-html/unnamed-chunk-14-1.png differ diff --git a/docs/assignment/06-practico_files/figure-html/unnamed-chunk-19-1.png b/docs/assignment/06-practico_files/figure-html/unnamed-chunk-19-1.png index 0344e2d..22efd64 100644 Binary files a/docs/assignment/06-practico_files/figure-html/unnamed-chunk-19-1.png and b/docs/assignment/06-practico_files/figure-html/unnamed-chunk-19-1.png differ diff --git a/docs/assignment/06-practico_files/figure-html/unnamed-chunk-20-1.png b/docs/assignment/06-practico_files/figure-html/unnamed-chunk-20-1.png index 2d520d0..eed3832 100644 Binary files a/docs/assignment/06-practico_files/figure-html/unnamed-chunk-20-1.png and b/docs/assignment/06-practico_files/figure-html/unnamed-chunk-20-1.png differ diff --git a/docs/assignment/07-practico.html b/docs/assignment/07-practico.html index 95540cf..029a39e 100644 --- a/docs/assignment/07-practico.html +++ b/docs/assignment/07-practico.html @@ -2,7 +2,7 @@ - + @@ -22,7 +22,7 @@ } /* CSS for syntax highlighting */ pre > code.sourceCode { white-space: pre; position: relative; } -pre > code.sourceCode > span { line-height: 1.25; } +pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } pre > code.sourceCode > span:empty { height: 1.2em; } .sourceCode { overflow: visible; } code.sourceCode > span { color: inherit; text-decoration: inherit; } @@ -81,13 +81,7 @@ "collapse-after": 3, "panel-placement": "end", "type": "overlay", - "limit": 50, - "keyboard-shortcut": [ - "f", - "/", - "s" - ], - "show-item-context": false, + "limit": 20, "language": { "search-no-results-text": "Sin resultados", "search-matching-documents-text": "documentos encontrados", @@ -96,7 +90,6 @@ "search-more-match-text": "resultado adicional en este documento", "search-more-matches-text": "resultados adicionales en este documento", "search-clear-button-title": "Borrar", - "search-text-placeholder": "", "search-detached-cancel-button-title": "Cancelar", "search-submit-button-title": "Enviar", "search-label": "Buscar" @@ -106,37 +99,10 @@ - - - + @@ -154,9 +120,9 @@
-
@@ -246,7 +212,6 @@

Práctica 7. Forma de una distribución

-

Presentación

@@ -292,21 +257,13 @@

1. Di
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
-
-
-

-
-
+

Por su parte, las distribuciones discretas son comunmente utilizadas con variables categóricas (nominales y ordinales). Son distribuciones en las que una variable sólo puede tomar un número contable de valores distintos. En otras palabras, es una distribución en la que la variable sólo puede tomar valores específicos, en lugar de cualquier valor dentro de un intervalo. Su dominio es un conjunto de valores enteros (\(N, Z, Q\)).

-
-
-

-
-
+

@@ -352,11 +309,7 @@

2. y = "Frecuencia", caption = "Fuente: Elaboración propia en base a Encuesta CEP Diciembre 2019.")
-
-
-

-
-
+

A partir de los estadísticos entregados, sabemos que la variable edad tiene una asimetría positiva (skew = 0.14) pero baja (< 0.5), lo cual indica que los datos se tienden a distribuir hacía los menores valores del eje X. Por su parte, la curtosis es negativa (kurtosis = -0.93) o platicúrtica, lo cual indica que existe una baja concentración en el centro de los datos.

@@ -374,11 +327,7 @@

2. y = "Frecuencia", caption = "Fuente: Elaboración propia en base a Encuesta CEP Diciembre 2019.")
-
-
-

-
-
+

En cuanto a la variable satisfaccion, tenemos una asimetría negativa (skew = -0.32) aunque baja, indicando que los datos se tienden a distribuir hacia la parte superior de la variable. Además, la curtosis también es negativa o platicúrtica (kurtosis = -0.45), por lo que existe una baja concentración en el centro de los datos.

@@ -414,22 +363,14 @@

Distribuciones empíricas y teóricas

ℹ Please use `after_stat(density)` instead.
-
-
-

-
-
+

ggplot(proc_cep, aes(edad)) + 
   geom_histogram(aes(x = edad, y = ..density..), bins = 50, color = "black", fill = "grey") +
   geom_density(color = "blue")+
   stat_function(fun = dnorm, args = list(mean = mean(proc_cep$edad), sd = sd(proc_cep$edad)))
-
-
-

-
-
+

En la primera figura vemos la distribución empírica de la variable edad (histograma y densidad). En la segunda, agregamos la curva normal (o distribución), y obtenemos una evaluación gráfica de qué tan bien nuestros datos se ajustan a esta distribución teórica.

@@ -444,11 +385,7 @@

Distribuciones empíricas y teóricas

`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
-
-
-

-
-
+

Una mejor manera de ver si nuestros datos o distribución empírica se ajustan a una distribución normal, es mediante los Q-Q plots.

@@ -457,21 +394,13 @@

Distribuciones empíricas y teóricas

stat_qq() + stat_qq_line(color = "blue")
-
-
-

-
-
+

ggplot(proc_cep, aes(sample = satisfaccion)) +
   stat_qq() +
   stat_qq_line(color = "blue")
-
-
-

-
-
+

La idea es que ajuste la curva teorica (la recta) con la mayor cantidad de puntos (la variable observada). Nos permite ver donde ajusta y donde no ajusta.

@@ -484,7 +413,7 @@

Distribución muestral

-

+

@@ -495,10 +424,10 @@

Distribución muestral

psych::describe(psu1)
-
   vars      n   mean     sd median trimmed   mad    min    max  range  skew
-X1    1 300000 500.24 109.89  500.4  500.36 109.7 -31.47 957.76 989.23 -0.01
+
   vars      n   mean     sd median trimmed    mad   min     max   range skew
+X1    1 300000 500.31 110.13 500.11  500.32 109.98 -2.08 1011.98 1014.06    0
    kurtosis  se
-X1    -0.02 0.2
+X1 0 0.2

Ahora, grafiquemos esta distribución y veamos qué tanto ajusta con la distribución normal.

@@ -510,21 +439,13 @@

Distribución muestral

`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
-
-
-

-
-
+

ggplot(data.frame(psu1), aes(psu1)) +
   geom_histogram(aes(x = psu1, y = ..density..), bins = 50, color = "black", fill = "grey") +
   stat_function(fun = dnorm, args = list(mean = mean(psu1), sd = sd(psu1)), color = "red")
-
-
-

-
-
+

Como vemos, dado que obtuvimos esta distribución de puntajes PSU mediante un muestreo aleatorio y repetido, es decir, que sacamos el puntaje PSU promedio de N muestras, tenemos una distribución empiríca que se ajusta a una distribución normal.

@@ -624,27 +545,10 @@

Video tutorial

// clear code selection e.clearSelection(); }); - var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//); - var mailtoRegex = new RegExp(/^mailto:/); - var filterRegex = new RegExp("https:\/\/descriptiva-2024\.netlify\.app"); - var isInternal = (href) => { - return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href); - } - // Inspect non-navigation links and adorn them if external - var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool)'); - for (var i=0; iVideo tutorial interactive: true, interactiveBorder: 10, theme: 'quarto', - placement: 'bottom-start', + placement: 'bottom-start' }; - if (contentFn) { - config.content = contentFn; - } - if (onTriggerFn) { - config.onTrigger = onTriggerFn; - } - if (onUntriggerFn) { - config.onUntrigger = onUntriggerFn; - } window.tippy(el, config); } const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]'); @@ -676,130 +571,7 @@

Video tutorial

try { href = new URL(href).hash; } catch {} const id = href.replace(/^#\/?/, ""); const note = window.document.getElementById(id); - if (note) { - return note.innerHTML; - } else { - return ""; - } - }); - } - const xrefs = window.document.querySelectorAll('a.quarto-xref'); - const processXRef = (id, note) => { - // Strip column container classes - const stripColumnClz = (el) => { - el.classList.remove("page-full", "page-columns"); - if (el.children) { - for (const child of el.children) { - stripColumnClz(child); - } - } - } - stripColumnClz(note) - if (id === null || id.startsWith('sec-')) { - // Special case sections, only their first couple elements - const container = document.createElement("div"); - if (note.children && note.children.length > 2) { - container.appendChild(note.children[0].cloneNode(true)); - for (let i = 1; i < note.children.length; i++) { - const child = note.children[i]; - if (child.tagName === "P" && child.innerText === "") { - continue; - } else { - container.appendChild(child.cloneNode(true)); - break; - } - } - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(container); - } - return container.innerHTML - } else { - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(note); - } - return note.innerHTML; - } - } else { - // Remove any anchor links if they are present - const anchorLink = note.querySelector('a.anchorjs-link'); - if (anchorLink) { - anchorLink.remove(); - } - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(note); - } - // TODO in 1.5, we should make sure this works without a callout special case - if (note.classList.contains("callout")) { - return note.outerHTML; - } else { - return note.innerHTML; - } - } - } - for (var i=0; i res.text()) - .then(html => { - const parser = new DOMParser(); - const htmlDoc = parser.parseFromString(html, "text/html"); - const note = htmlDoc.getElementById(id); - if (note !== null) { - const html = processXRef(id, note); - instance.setContent(html); - } - }).finally(() => { - instance.enable(); - instance.show(); - }); - } - } else { - // See if we can fetch a full url (with no hash to target) - // This is a special case and we should probably do some content thinning / targeting - fetch(url) - .then(res => res.text()) - .then(html => { - const parser = new DOMParser(); - const htmlDoc = parser.parseFromString(html, "text/html"); - const note = htmlDoc.querySelector('main.content'); - if (note !== null) { - // This should only happen for chapter cross references - // (since there is no id in the URL) - // remove the first header - if (note.children.length > 0 && note.children[0].tagName === "HEADER") { - note.children[0].remove(); - } - const html = processXRef(null, note); - instance.setContent(html); - } - }).finally(() => { - instance.enable(); - instance.show(); - }); - } - }, function(instance) { + return note.innerHTML; }); } let selectedAnnoteEl; @@ -843,7 +615,6 @@

Video tutorial

} div.style.top = top - 2 + "px"; div.style.height = height + 4 + "px"; - div.style.left = 0; let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter"); if (gutterDiv === null) { gutterDiv = window.document.createElement("div"); @@ -869,32 +640,6 @@

Video tutorial

}); selectedAnnoteEl = undefined; }; - // Handle positioning of the toggle - window.addEventListener( - "resize", - throttle(() => { - elRect = undefined; - if (selectedAnnoteEl) { - selectCodeLines(selectedAnnoteEl); - } - }, 10) - ); - function throttle(fn, ms) { - let throttle = false; - let timer; - return (...args) => { - if(!throttle) { // first call gets through - fn.apply(this, args); - throttle = true; - } else { // all the others get throttled - if(timer) clearTimeout(timer); // cancel #2 - timer = setTimeout(() => { - fn.apply(this, args); - timer = throttle = false; - }, ms); - } - }; - } // Attach click handler to the DT const annoteDls = window.document.querySelectorAll('dt[data-target-cell]'); for (const annoteDlNode of annoteDls) { @@ -957,19 +702,14 @@

Video tutorial

- \ No newline at end of file diff --git a/docs/assignment/07-practico_files/figure-html/unnamed-chunk-12-1.png b/docs/assignment/07-practico_files/figure-html/unnamed-chunk-12-1.png index b9eb6af..41a0f99 100644 Binary files a/docs/assignment/07-practico_files/figure-html/unnamed-chunk-12-1.png and b/docs/assignment/07-practico_files/figure-html/unnamed-chunk-12-1.png differ diff --git a/docs/assignment/07-practico_files/figure-html/unnamed-chunk-12-2.png b/docs/assignment/07-practico_files/figure-html/unnamed-chunk-12-2.png index 2c01fd1..8c00c19 100644 Binary files a/docs/assignment/07-practico_files/figure-html/unnamed-chunk-12-2.png and b/docs/assignment/07-practico_files/figure-html/unnamed-chunk-12-2.png differ diff --git a/docs/assignment/08-practico.html b/docs/assignment/08-practico.html index 3cf8095..4640b55 100644 --- a/docs/assignment/08-practico.html +++ b/docs/assignment/08-practico.html @@ -2,7 +2,7 @@ - + @@ -22,7 +22,7 @@ } /* CSS for syntax highlighting */ pre > code.sourceCode { white-space: pre; position: relative; } -pre > code.sourceCode > span { line-height: 1.25; } +pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } pre > code.sourceCode > span:empty { height: 1.2em; } .sourceCode { overflow: visible; } code.sourceCode > span { color: inherit; text-decoration: inherit; } @@ -81,13 +81,7 @@ "collapse-after": 3, "panel-placement": "end", "type": "overlay", - "limit": 50, - "keyboard-shortcut": [ - "f", - "/", - "s" - ], - "show-item-context": false, + "limit": 20, "language": { "search-no-results-text": "Sin resultados", "search-matching-documents-text": "documentos encontrados", @@ -96,7 +90,6 @@ "search-more-match-text": "resultado adicional en este documento", "search-more-matches-text": "resultados adicionales en este documento", "search-clear-button-title": "Borrar", - "search-text-placeholder": "", "search-detached-cancel-button-title": "Cancelar", "search-submit-button-title": "Enviar", "search-label": "Buscar" @@ -106,37 +99,10 @@ - - - + @@ -154,9 +120,9 @@
-
@@ -250,7 +216,6 @@

Inferencia estadística univariada

-

Presentación

@@ -349,7 +314,7 @@

Estimaciones de punto y de intervalo

-

+

@@ -368,7 +333,7 @@

Estimaciones de punto y de intervalo

-

+

@@ -596,27 +561,10 @@

Video de la sesión { - return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href); - } - // Inspect non-navigation links and adorn them if external - var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool)'); - for (var i=0; iVideo de la sesiónVideo de la sesión { - // Strip column container classes - const stripColumnClz = (el) => { - el.classList.remove("page-full", "page-columns"); - if (el.children) { - for (const child of el.children) { - stripColumnClz(child); - } - } - } - stripColumnClz(note) - if (id === null || id.startsWith('sec-')) { - // Special case sections, only their first couple elements - const container = document.createElement("div"); - if (note.children && note.children.length > 2) { - container.appendChild(note.children[0].cloneNode(true)); - for (let i = 1; i < note.children.length; i++) { - const child = note.children[i]; - if (child.tagName === "P" && child.innerText === "") { - continue; - } else { - container.appendChild(child.cloneNode(true)); - break; - } - } - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(container); - } - return container.innerHTML - } else { - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(note); - } - return note.innerHTML; - } - } else { - // Remove any anchor links if they are present - const anchorLink = note.querySelector('a.anchorjs-link'); - if (anchorLink) { - anchorLink.remove(); - } - if (window.Quarto?.typesetMath) { - window.Quarto.typesetMath(note); - } - // TODO in 1.5, we should make sure this works without a callout special case - if (note.classList.contains("callout")) { - return note.outerHTML; - } else { - return note.innerHTML; - } - } - } - for (var i=0; i res.text()) - .then(html => { - const parser = new DOMParser(); - const htmlDoc = parser.parseFromString(html, "text/html"); - const note = htmlDoc.getElementById(id); - if (note !== null) { - const html = processXRef(id, note); - instance.setContent(html); - } - }).finally(() => { - instance.enable(); - instance.show(); - }); - } - } else { - // See if we can fetch a full url (with no hash to target) - // This is a special case and we should probably do some content thinning / targeting - fetch(url) - .then(res => res.text()) - .then(html => { - const parser = new DOMParser(); - const htmlDoc = parser.parseFromString(html, "text/html"); - const note = htmlDoc.querySelector('main.content'); - if (note !== null) { - // This should only happen for chapter cross references - // (since there is no id in the URL) - // remove the first header - if (note.children.length > 0 && note.children[0].tagName === "HEADER") { - note.children[0].remove(); - } - const html = processXRef(null, note); - instance.setContent(html); - } - }).finally(() => { - instance.enable(); - instance.show(); - }); - } - }, function(instance) { + return note.innerHTML; }); } let selectedAnnoteEl; @@ -815,7 +631,6 @@

Video de la sesiónVideo de la sesión { - elRect = undefined; - if (selectedAnnoteEl) { - selectCodeLines(selectedAnnoteEl); - } - }, 10) - ); - function throttle(fn, ms) { - let throttle = false; - let timer; - return (...args) => { - if(!throttle) { // first call gets through - fn.apply(this, args); - throttle = true; - } else { // all the others get throttled - if(timer) clearTimeout(timer); // cancel #2 - timer = setTimeout(() => { - fn.apply(this, args); - timer = throttle = false; - }, ms); - } - }; - } // Attach click handler to the DT const annoteDls = window.document.querySelectorAll('dt[data-target-cell]'); for (const annoteDlNode of annoteDls) { @@ -929,19 +718,14 @@

Video de la sesión - \ No newline at end of file diff --git a/docs/assignment/index.html b/docs/assignment/index.html index dafaf96..5394cbf 100644 --- a/docs/assignment/index.html +++ b/docs/assignment/index.html @@ -2,7 +2,7 @@ - + @@ -47,13 +47,7 @@ "collapse-after": 3, "panel-placement": "end", "type": "overlay", - "limit": 50, - "keyboard-shortcut": [ - "f", - "/", - "s" - ], - "show-item-context": false, + "limit": 20, "language": { "search-no-results-text": "No results", "search-matching-documents-text": "matching documents", @@ -62,7 +56,6 @@ "search-more-match-text": "more match in this document", "search-more-matches-text": "more matches in this document", "search-clear-button-title": "Clear", - "search-text-placeholder": "", "search-detached-cancel-button-title": "Cancel", "search-submit-button-title": "Submit", "search-label": "Search" @@ -73,7 +66,7 @@ - + @@ -91,9 +84,9 @@
-
-
- -

Documento de presentación