-Profesor: Humberto Llinas Solano
Para llevar a cabo este análisis, se empleó la base de datos survey del paquete lsm en R, la cual recopila diversas características sociodemográficas y académicas de los encuestados. Con el fin de estudiar tanto variables cuantitativas como cualitativas mediante pruebas de hipótesis, se seleccionaron cuatro variables clave: SemAcum (promedio académico acumulado), Score (puntaje), Like (gusto) y Course (tipo de curso).
A partir de la base completa, se delimitaron dos subconjuntos de datos. El primero, denominado df1, abarca las primeras 150 observaciones y se destinó a los análisis que exigen mayor tamaño de muestra (SemAcum, Like y Course). El segundo, llamado df2, incluye las primeras 25 observaciones y se reservó para la prueba sobre Score, adaptada a muestras más pequeñas. En cada procedimiento se excluyeron los valores perdidos (NA), por lo que el tamaño muestral efectivo se ajustó al número real de datos disponibles tras este filtro.
El análisis estadístico se estructuró en torno a tres procedimientos de prueba de hipótesis evaluados bajo un nivel de significancia de = 0.05 en modalidades de cola derecha, cola izquierda y bilateral (tomando decisiones mediante el valor p): una prueba Z para la media de la variable SemAcum bajo el supuesto de una desviación estándar conocida (= 0.8); una prueba t de Student para la media de la variable Score con varianza desconocida y $n - 1 grados de libertad; y pruebas de proporciones mediante aproximación normal para las variables cualitativas Like y Course frente al valor de referencia P0 = 0.5.
Como complemento al análisis inferencial, se elaboraron tablas de frecuencias univariadas para Like, una tabla de contingencia cruzando Like y Course, diagramas de barras y medidas estadísticas descriptivas para SemAcum. Todo el procesamiento se ejecutó en R y RStudio mediante un documento R Markdown, utilizando los paquetes lsm, knitr, kableExtra y ggplot2 para garantizar la reproducibilidad y el diseño visual de los resultados. # Resultados
library(lsm)
library(knitr)
library(kableExtra)
library(ggplot2)
# ============================================================
# 1. Funciones auxiliares
# ============================================================
formato_num <- function(x, digitos = 4) {
format(
round(x, digitos),
nsmall = 0,
trim = TRUE,
scientific = FALSE
)
}
nombre_alternativa <- function(alternative) {
switch(
alternative,
"two.sided" = "Bilateral",
"greater" = "Cola derecha",
"less" = "Cola izquierda"
)
}
valor_p_normal <- function(estadistico, alternative) {
switch(
alternative,
"two.sided" = 2 * pnorm(-abs(estadistico)),
"greater" = pnorm(estadistico, lower.tail = FALSE),
"less" = pnorm(estadistico)
)
}
valor_p_t <- function(estadistico, gl, alternative) {
switch(
alternative,
"two.sided" = 2 * pt(-abs(estadistico), df = gl),
"greater" = pt(estadistico, df = gl, lower.tail = FALSE),
"less" = pt(estadistico, df = gl)
)
}
valor_p_chi <- function(estadistico, gl, alternative) {
switch(
alternative,
"two.sided" = min(
1,
2 * min(
pchisq(estadistico, df = gl),
pchisq(estadistico, df = gl, lower.tail = FALSE)
)
),
"greater" = pchisq(estadistico, df = gl, lower.tail = FALSE),
"less" = pchisq(estadistico, df = gl)
)
}
valor_p_f <- function(estadistico, gl1, gl2, alternative) {
switch(
alternative,
"two.sided" = min(
1,
2 * min(
pf(estadistico, df1 = gl1, df2 = gl2),
pf(estadistico, df1 = gl1, df2 = gl2, lower.tail = FALSE)
)
),
"greater" = pf(
estadistico,
df1 = gl1,
df2 = gl2,
lower.tail = FALSE
),
"less" = pf(
estadistico,
df1 = gl1,
df2 = gl2
)
)
}
decision_prueba <- function(valor_p, alpha) {
if (valor_p <= alpha) {
"Rechazar H0"
} else {
"No rechazar H0"
}
}
conclusion_prueba <- function(valor_p, alpha) {
if (valor_p <= alpha) {
paste0(
"Existe evidencia estadística suficiente, al nivel α = ",
formato_num(alpha),
", para apoyar H1"
)
} else {
paste0(
"No existe evidencia estadística suficiente, al nivel α = ",
formato_num(alpha),
", para apoyar H1"
)
}
}
validar_alternativa <- function(alternative) {
match.arg(alternative, c("two.sided", "greater", "less"))
}
# ============================================================
# 2. Prueba Z para una media con sigma conocida
# H0: mu = mu0
# ============================================================
ph_media_z <- function(media, sigma, n, mu0,
alpha = 0.05,
alternative = "two.sided",
digitos = 4) {
alternative <- validar_alternativa(alternative)
if (sigma <= 0 || n <= 1) {
stop("sigma debe ser positiva y n debe ser mayor que 1.")
}
error_estandar <- sigma / sqrt(n)
estadistico <- (media - mu0) / error_estandar
valor_p <- valor_p_normal(estadistico, alternative)
resultado <- data.frame(
Medida = c(
"Media muestral",
"Media bajo H0",
"σ",
"n",
"Error estándar",
"Tipo de prueba",
"Nivel de significancia",
"Estadístico Z",
"p-valor",
"Decisión",
"Conclusión"
),
Valor = c(
formato_num(media, digitos),
formato_num(mu0, digitos),
formato_num(sigma, digitos),
n,
formato_num(error_estandar, digitos),
nombre_alternativa(alternative),
formato_num(alpha, digitos),
formato_num(estadistico, digitos),
formato_num(valor_p, digitos),
decision_prueba(valor_p, alpha),
conclusion_prueba(valor_p, alpha)
),
check.names = FALSE
)
knitr::kable(
resultado,
format = "html",
col.names = c("Medida", "Valor"),
align = c("l", "r")
)
}
# ============================================================
# 3. Prueba t para una media con sigma desconocida
# H0: mu = mu0
# ============================================================
ph_media_t <- function(media, s, n, mu0,
alpha = 0.05,
alternative = "two.sided",
digitos = 4) {
alternative <- validar_alternativa(alternative)
if (s <= 0 || n <= 1) {
stop("s debe ser positiva y n debe ser mayor que 1.")
}
gl <- n - 1
error_estandar <- s / sqrt(n)
estadistico <- (media - mu0) / error_estandar
valor_p <- valor_p_t(estadistico, gl, alternative)
resultado <- data.frame(
Medida = c(
"Media muestral",
"Media bajo H0",
"s",
"n",
"Grados de libertad",
"Error estándar",
"Tipo de prueba",
"Nivel de significancia",
"Estadístico t",
"p-valor",
"Decisión",
"Conclusión"
),
Valor = c(
formato_num(media, digitos),
formato_num(mu0, digitos),
formato_num(s, digitos),
n,
gl,
formato_num(error_estandar, digitos),
nombre_alternativa(alternative),
formato_num(alpha, digitos),
formato_num(estadistico, digitos),
formato_num(valor_p, digitos),
decision_prueba(valor_p, alpha),
conclusion_prueba(valor_p, alpha)
),
check.names = FALSE
)
knitr::kable(
resultado,
format = "html",
col.names = c("Medida", "Valor"),
align = c("l", "r")
)
}
# ============================================================
# 4. Prueba Z para una proporción
# H0: p = p0
# ============================================================
ph_proporcion <- function(exitos, n, p0,
alpha = 0.05,
alternative = "two.sided",
digitos = 4) {
alternative <- validar_alternativa(alternative)
if (exitos < 0 || exitos > n) {
stop("El número de éxitos debe estar entre 0 y n.")
}
if (p0 <= 0 || p0 >= 1) {
stop("p0 debe estar entre 0 y 1.")
}
proporcion <- exitos / n
error_estandar <- sqrt(p0 * (1 - p0) / n)
estadistico <- (proporcion - p0) / error_estandar
valor_p <- valor_p_normal(estadistico, alternative)
resultado <- data.frame(
Medida = c(
"Éxitos",
"n",
"Proporción muestral",
"Proporción bajo H0",
"ES bajo H0",
"Tipo de prueba",
"Nivel de significancia",
"Estadístico Z",
"p-valor",
"Decisión",
"Conclusión"
),
Valor = c(
exitos,
n,
formato_num(proporcion, digitos),
formato_num(p0, digitos),
formato_num(error_estandar, digitos),
nombre_alternativa(alternative),
formato_num(alpha, digitos),
formato_num(estadistico, digitos),
formato_num(valor_p, digitos),
decision_prueba(valor_p, alpha),
conclusion_prueba(valor_p, alpha)
),
check.names = FALSE
)
knitr::kable(
resultado,
format = "html",
col.names = c("Medida", "Valor"),
align = c("l", "r")
)
}
datosCompleto <- lsm::survey
df1 <- datosCompleto[1:150,]
df2 <- datosCompleto[1:25,]
dim(datosCompleto)
## [1] 800 66
dim(df1)
## [1] 150 66
dim(df2)
## [1] 25 66
unique(df1$Like)
## [1] "TV" "Network"
unique(df1$Course)
## [1] "Face-to-Face" "Virtual"
𝐻0: 𝜇≤3.5 frente a 𝐻1: 𝜇>3.5.
sem <- df1$SemAcum[!is.na(df1$SemAcum)]
media_sem <- mean(sem)
n_sem <- length(sem)
resultado <- ph_media_z(
media = media_sem,
sigma = 0.8,
n = n_sem,
mu0 = 3.5,
alpha = 0.05,
alternative = "greater"
)
resultado
| Medida | Valor |
|---|---|
| Media muestral | 3.4237 |
| Media bajo H0 | 3.5 |
| σ | 0.8 |
| n | 150 |
| Error estándar | 0.0653 |
| Tipo de prueba | Cola derecha |
| Nivel de significancia | 0.05 |
| Estadístico Z | -1.1686 |
| p-valor | 0.8787 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
𝐻0: 𝜇≥3.5 frente a 𝐻1: 𝜇<3.5.
sem <- df1$SemAcum[!is.na(df1$SemAcum)]
media_sem <- mean(sem)
n_sem <- length(sem)
resultado <- ph_media_z(
media = media_sem,
sigma = 0.8,
n = n_sem,
mu0 = 3.5,
alpha = 0.05,
alternative = "less"
)
resultado
| Medida | Valor |
|---|---|
| Media muestral | 3.4237 |
| Media bajo H0 | 3.5 |
| σ | 0.8 |
| n | 150 |
| Error estándar | 0.0653 |
| Tipo de prueba | Cola izquierda |
| Nivel de significancia | 0.05 |
| Estadístico Z | -1.1686 |
| p-valor | 0.1213 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
𝐻0: 𝜇=3.5 frente a 𝐻1: 𝜇≠3.5.
sem <- df1$SemAcum[!is.na(df1$SemAcum)]
media_sem <- mean(sem)
n_sem <- length(sem)
resultado <- ph_media_z(
media = media_sem,
sigma = 0.8,
n = n_sem,
mu0 = 3.5,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Media muestral | 3.4237 |
| Media bajo H0 | 3.5 |
| σ | 0.8 |
| n | 150 |
| Error estándar | 0.0653 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico Z | -1.1686 |
| p-valor | 0.2426 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
𝐻0: 𝜇≤60 frente a 𝐻1: 𝜇>60.
puntaje <- df2$Score[!is.na(df2$Score)]
media_puntaje <- mean(puntaje)
s_puntaje <- sd(puntaje)
n_puntaje <- length(puntaje)
resultado <- ph_media_t(
media = media_puntaje,
s = s_puntaje,
n = n_puntaje,
mu0 = 60,
alpha = 0.05,
alternative = "greater"
)
resultado
| Medida | Valor |
|---|---|
| Media muestral | 40.64 |
| Media bajo H0 | 60 |
| s | 20.3877 |
| n | 25 |
| Grados de libertad | 24 |
| Error estándar | 4.0775 |
| Tipo de prueba | Cola derecha |
| Nivel de significancia | 0.05 |
| Estadístico t | -4.748 |
| p-valor | 1 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
𝐻0: 𝜇≥60 frente a 𝐻1: 𝜇<60.
puntaje <- df2$Score[!is.na(df2$Score)]
media_puntaje <- mean(puntaje)
s_puntaje <- sd(puntaje)
n_puntaje <- length(puntaje)
resultado <- ph_media_t(
media = media_puntaje,
s = s_puntaje,
n = n_puntaje,
mu0 = 60,
alpha = 0.05,
alternative = "less"
)
resultado
| Medida | Valor |
|---|---|
| Media muestral | 40.64 |
| Media bajo H0 | 60 |
| s | 20.3877 |
| n | 25 |
| Grados de libertad | 24 |
| Error estándar | 4.0775 |
| Tipo de prueba | Cola izquierda |
| Nivel de significancia | 0.05 |
| Estadístico t | -4.748 |
| p-valor | 0 |
| Decisión | Rechazar H0 |
| Conclusión | Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
𝐻0: 𝜇=60 frente a 𝐻1: 𝜇≠60.
puntaje <- df2$Score[!is.na(df2$Score)]
media_puntaje <- mean(puntaje)
s_puntaje <- sd(puntaje)
n_puntaje <- length(puntaje)
resultado <- ph_media_t(
media = media_puntaje,
s = s_puntaje,
n = n_puntaje,
mu0 = 60,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Media muestral | 40.64 |
| Media bajo H0 | 60 |
| s | 20.3877 |
| n | 25 |
| Grados de libertad | 24 |
| Error estándar | 4.0775 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico t | -4.748 |
| p-valor | 0.0001 |
| Decisión | Rechazar H0 |
| Conclusión | Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
𝐻0: 𝑝≤0.5 frente a 𝐻1: 𝑝>0.5.
gusto <- df1$Like[!is.na(df1$Like)]
total_net <- sum(gusto == 1)
n_net <- length(gusto)
resultado <- ph_proporcion(
exitos = total_net,
n = n_net,
p0 = 0.50,
alpha = 0.05,
alternative = "greater"
)
resultado
| Medida | Valor |
|---|---|
| Éxitos | 0 |
| n | 150 |
| Proporción muestral | 0 |
| Proporción bajo H0 | 0.5 |
| ES bajo H0 | 0.0408 |
| Tipo de prueba | Cola derecha |
| Nivel de significancia | 0.05 |
| Estadístico Z | -12.2474 |
| p-valor | 1 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
𝐻0: 𝑝≥0.5 frente a 𝐻1: 𝑝<0.5.
gusto <- df1$Like[!is.na(df1$Like)]
total_net <- sum(gusto == 1)
n_net <- length(gusto)
resultado <- ph_proporcion(
exitos = total_net,
n = n_net,
p0 = 0.50,
alpha = 0.05,
alternative = "less"
)
resultado
| Medida | Valor |
|---|---|
| Éxitos | 0 |
| n | 150 |
| Proporción muestral | 0 |
| Proporción bajo H0 | 0.5 |
| ES bajo H0 | 0.0408 |
| Tipo de prueba | Cola izquierda |
| Nivel de significancia | 0.05 |
| Estadístico Z | -12.2474 |
| p-valor | 0 |
| Decisión | Rechazar H0 |
| Conclusión | Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
𝐻0: 𝑝=0.5 frente a 𝐻1: 𝑝≠0.5.
gusto <- df1$Like[!is.na(df1$Like)]
total_net <- sum(gusto == 1)
n_net <- length(gusto)
resultado <- ph_proporcion(
exitos = total_net,
n = n_net,
p0 = 0.50,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Éxitos | 0 |
| n | 150 |
| Proporción muestral | 0 |
| Proporción bajo H0 | 0.5 |
| ES bajo H0 | 0.0408 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico Z | -12.2474 |
| p-valor | 0 |
| Decisión | Rechazar H0 |
| Conclusión | Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
𝐻0: 𝑝≤0.5 frente a 𝐻1: 𝑝>0.5.
curso <- df1$Course[!is.na(df1$Course)]
total_virt <- sum(curso == 1)
n_virt <- length(curso)
resultado <- ph_proporcion(
exitos = total_virt,
n = n_virt,
p0 = 0.50,
alpha = 0.05,
alternative = "greater"
)
resultado
| Medida | Valor |
|---|---|
| Éxitos | 0 |
| n | 150 |
| Proporción muestral | 0 |
| Proporción bajo H0 | 0.5 |
| ES bajo H0 | 0.0408 |
| Tipo de prueba | Cola derecha |
| Nivel de significancia | 0.05 |
| Estadístico Z | -12.2474 |
| p-valor | 1 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
𝐻0: 𝑝≥0.5 frente a 𝐻1: 𝑝<0.5.
curso <- df1$Course[!is.na(df1$Course)]
total_virt <- sum(curso == 1)
n_virt <- length(curso)
resultado <- ph_proporcion(
exitos = total_virt,
n = n_virt,
p0 = 0.50,
alpha = 0.05,
alternative = "less"
)
resultado
| Medida | Valor |
|---|---|
| Éxitos | 0 |
| n | 150 |
| Proporción muestral | 0 |
| Proporción bajo H0 | 0.5 |
| ES bajo H0 | 0.0408 |
| Tipo de prueba | Cola izquierda |
| Nivel de significancia | 0.05 |
| Estadístico Z | -12.2474 |
| p-valor | 0 |
| Decisión | Rechazar H0 |
| Conclusión | Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
𝐻0: 𝑝=0.5 frente a 𝐻1: 𝑝≠0.5.
curso <- df1$Course[!is.na(df1$Course)]
total_virt <- sum(curso == 1)
n_virt <- length(curso)
resultado <- ph_proporcion(
exitos = total_virt,
n = n_virt,
p0 = 0.50,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Éxitos | 0 |
| n | 150 |
| Proporción muestral | 0 |
| Proporción bajo H0 | 0.5 |
| ES bajo H0 | 0.0408 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico Z | -12.2474 |
| p-valor | 0 |
| Decisión | Rechazar H0 |
| Conclusión | Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Muestra <- datosCompleto[1:150,]
Gusto <- as.factor(Muestra$Like)
Tabla1 <- table(Gusto)
Tabla1
## Gusto
## Network TV
## 66 84
Curso <- as.factor(Muestra$Course)
Tabla3 <- table(Gusto, Curso)
Tabla3
## Curso
## Gusto Face-to-Face Virtual
## Network 30 36
## TV 35 49
ggplot(Muestra, aes(x = Gusto)) + #1
#geom_bar() + #2
geom_bar(width=0.5, colour="black", fill="skyblue") + #2
labs(x="Like",y= "Frecuencia") + #3
ylim(c(0,150)) + #4
#xlim(c(0,300)) + #4
ggtitle("Diagrama de barras") + #5
# theme_bw() + #6
theme_bw(base_size = 12) + #6
#coord_flip() + #7
geom_text(aes(label=..count..), stat='count', #8
position=position_dodge(0.9),
vjust=-0.5,
size=5.0
) +
facet_wrap(~"Variable Like") #9
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
ggplot(Muestra, aes(Gusto, fill=Curso)) +
geom_bar(position="dodge",colour="black") +
labs(x= "Like", y="Frecuencias", fill="Course") +
ylim(c(0,100)) +
#xlim(c(0,300)) +
ggtitle("Diagrama de barras") +
#theme_bw() +
theme_bw(base_size = 12) +
#coord_flip() +
#guides(fill=FALSE)+ #8
scale_fill_manual(values = c("orange","green")) + #9
geom_text(aes(label=..count..), stat='count', #10
position=position_dodge(0.9),
vjust=-0.5,
size=5.0
)+
facet_wrap(~"Course por uso del tiempo libre") #11
Muestra2 <- datosCompleto[1:150,]
x <- as.numeric(Muestra2$SemAcum) # A) Convirtiendo la variable a numérica
x
## [1] 4.25 2.80 4.15 3.20 3.45 2.75 2.70 4.35 4.30 2.80 4.00 2.65 3.90 3.00 4.10
## [16] 2.50 2.50 4.35 2.65 3.40 4.30 3.10 3.00 2.65 2.70 2.80 3.55 2.85 3.50 3.80
## [31] 4.35 3.45 4.05 4.20 3.60 3.55 2.70 4.35 2.95 4.30 3.05 3.50 4.20 4.05 2.80
## [46] 2.90 3.60 3.90 3.50 2.50 3.15 3.25 3.55 4.05 4.00 3.35 3.25 2.75 3.10 2.50
## [61] 3.45 3.15 2.80 3.80 3.75 3.60 3.85 3.45 4.30 3.15 3.45 2.95 2.55 2.75 4.40
## [76] 3.90 3.25 2.70 3.50 2.65 2.90 2.80 2.75 2.65 3.10 3.35 4.00 2.80 3.35 2.80
## [91] 4.45 2.60 4.25 3.70 3.55 2.50 3.90 2.65 2.50 4.35 2.95 3.80 2.50 4.00 4.00
## [106] 3.55 3.10 4.05 3.20 4.30 3.25 3.30 4.30 2.60 2.55 3.85 4.05 3.00 3.90 4.20
## [121] 4.45 2.85 3.55 4.30 3.00 2.95 4.35 4.30 2.90 3.15 3.60 2.75 2.90 4.35 3.20
## [136] 3.05 2.80 3.55 4.35 4.40 2.75 4.30 3.05 3.20 2.60 4.10 3.10 4.40 4.35 3.65
min(x) #B) Mínimo
## [1] 2.5
max(x) #C) Máximo
## [1] 4.45
range(x) #D) Obtenemos (min, max)
## [1] 2.50 4.45
length(x) #E) Tamaño
## [1] 150
sum(x) #F) Suma los valores de los datos
## [1] 513.55
mean(x) #G) Media aritmética
## [1] 3.423667
median(x) #H) Mediana
## [1] 3.375
var(x) #I) Varianza muestral
## [1] 0.3803254
sqrt(var(x)) #J) Desviación estándar muestral (una forma)
## [1] 0.6167053
sd(x) #K) Desviación estándar muestral (otra forma)
## [1] 0.6167053
quantile(x, probs=0.80) #M) 80-ésimo percentil
## 80%
## 4.1
quantile(x, probs=0.25) #N) Primer cuartil o 25-ésimo percentil
## 25%
## 2.85
quantile(x, probs=0.50) #O) Segundo cuartil o 50-ésimo percentil o mediana
## 50%
## 3.375
quantile(x, probs=0.75) #P) Tercer cuartil o 75-ésimo percentil
## 75%
## 4
Tabla_IA <- data.frame(
Aspecto = c("Uso de IA",
"Herramienta utilizada",
"Uso realizado",
"Porcentaje estimado de utilización"),
Informacion = c("Sí",
"Claude",
"xx",
"xx %")
)
kable(Tabla_IA,
col.names = c("Aspecto", "Información"),
align = c("l", "l"),
caption = "Declaración sobre el uso de Inteligencia Artificial") %>%
kable_styling(full_width = FALSE, position = "left",
bootstrap_options = c("striped", "hover")) %>%
row_spec(0, bold = TRUE, color = "white", background = "#2E5C7F") %>%
column_spec(1, width = "10cm") %>%
column_spec(2, width = "10cm")
| Aspecto | Información |
|---|---|
| Uso de IA | Sí |
| Herramienta utilizada | Claude |
| Uso realizado | xx |
| Porcentaje estimado de utilización | xx % |