Cargar Base de Dados

# Alpha de Cronbach
# Universidad Nacional del Altiplano Puno 2026
# Britman Salcedo P.

library(ggplot2) # Gráfica de boxplot
library(psych) # Para o alpha de cronbach 
## 
## Anexando pacote: 'psych'
## Os seguintes objetos são mascarados por 'package:ggplot2':
## 
##     %+%, alpha
library(readxl) # Leitura de dados em excel 
library(effsize) # função dos calculos
## 
## Anexando pacote: 'effsize'
## O seguinte objeto é mascarado por 'package:psych':
## 
##     cohen.d
# Aqui carregar a base de dados 
dado <- read_excel("C:/Users/deskt/Downloads/Dados_UNAP_EPS_2026.xlsx")
## New names:
## • `` -> `...3`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `TOTAL` -> `TOTAL...9`
## • `` -> `...10`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`
## • `TOTAL` -> `TOTAL...16`
#View(dado)

Items y preguntas (son 4 preguntas e 5 items )

# Aqui carregar a perguntas de cada sujeito
pre_riqueza <- list(
  c(0.2,0.4,0,0,0.2),
  c(0.2,0.2,0.2,0,0),
  c(0.6,0.4,0.2,0.4,0.2),
  c(0.4,0.4,0.4,0,0.6),
  c(0.6,0.8,0.2,0.6,0.6),
  c(0.2,0.2,0.2,0,0.4),
  c(0,0,0,0.4,0),
  c(0.2,0.6,0,0,0.2),
  c(0.8,0.2,0.2,0,0.4),
  c(0.2,0,0,0,0),
  c(0.6,0.4,0.4,0,0.6),
  c(0,0,0,0.2,0.2),
  c(0.2,0.6,0.2,0,0.4),
  c(0.6,0,0.4,0,0)
)

pre_creatividad <- list(
  c(0.4,0.6,0.4,0,0.4),
  c(0.2,0.2,0.2,0,0),
  c(0.8,0.8,0.2,0.6,0.2),
  c(0.6,0.8,0.6,0,0.6),
  c(0.8,0.8,0.2,0.8,0.8),
  c(0.2,0.2,0.2,0,0.4),
  c(0,0,0,0.4,0),
  c(0.2,0.8,0,0,0.2),
  c(0.8,0.6,0.2,0,0.6),
  c(0.2,0,0,0,0),
  c(0.8,0.4,0.8,0,0.6),
  c(0,0,0,0.2,0.2),
  c(0.2,0.6,0.2,0,0.4),
  c(0.8,0,0.4,0,0)
)

pre_originalidad <- list(
  c(0.4,0,0.6,0,0.6),
  c(0.2,0.2,0.2,0,0),
  c(0.6,0.8,0.2,0.4,0.2),
  c(0.4,0.8,0.6,0,0.6),
  c(0.8,0.8,0.2,0.6,0.6),
  c(0.2,0.2,0.2,0,0.4),
  c(0,0,0,0.4,0),
  c(0.2,0.8,0,0,0.2),
  c(0.8,0.6,0.2,0,0.4),
  c(0.2,0,0,0,0),
  c(0.6,0.4,0.6,0,0.6),
  c(0,0,0,0.2,0.2),
  c(0.2,0.6,0.2,0,0.4),
  c(0.6,0,0.4,0,0)
)

pre_sintactica <- list(
  c(0.4,0.6,0,0,0.4),
  c(0.2,0.2,0.2,0,0),
  c(0.6,0.6,0.2,0.4,0.2),
  c(0.2,0.6,0.2,0,0.6),
  c(0.4,0.8,0.2,0.6,0.6),
  c(0.2,0.2,0.2,0,0.4),
  c(0,0,0,0.4,0),
  c(0.2,0.2,0,0,0.2),
  c(0.8,0.4,0.2,0,0.4),
  c(0.2,0,0,0,0),
  c(0.4,0.2,0.6,0,0.6),
  c(0,0,0,0.2,0.2),
  c(0.2,0.6,0.2,0,0.4),
  c(0.6,0,0.4,0,0)
)

pre_ortografia <- list(
  c(0.6,0.4,0,0,0.4),
  c(0.2,0.2,0.2,0,0),
  c(0.4,0.4,0.2,0.2,0.2),
  c(0.4,0.4,0.2,0,0.6),
  c(0.4,0.8,0.2,0.4,0.4),
  c(0.2,0.2,0.2,0,0.4),
  c(0,0,0,0.4,0),
  c(0.2,0.6,0,0,0.2),
  c(0.8,0.2,0.2,0,0.2),
  c(0.2,0,0,0,0),
  c(0.6,0.6,0.6,0,0.6),
  c(0,0,0,0.2,0.2),
  c(0.2,0.6,0.2,0,0.4),
  c(0.4,0,0.4,0,0)
)

calc_media <- function(lista) {
  sapply(lista, mean)
}

dados_pre <- data.frame(
  riqueza = calc_media(pre_riqueza),
  creatividad = calc_media(pre_creatividad),
  originalidad = calc_media(pre_originalidad),
  sintactica = calc_media(pre_sintactica),
  ortografia = calc_media(pre_ortografia)
)

alpha_pre <- psych::alpha(dados_pre)
## Number of categories should be increased  in order to count frequencies.
print(alpha_pre)
## 
## Reliability analysis   
## Call: psych::alpha(x = dados_pre)
## 
##   raw_alpha std.alpha G6(smc) average_r S/N    ase mean   sd median_r
##       0.98      0.99    0.99      0.95  88 0.0048 0.26 0.16     0.95
## 
##     95% confidence boundaries 
##          lower alpha upper
## Feldt     0.96  0.98  0.99
## Duhachek  0.97  0.98  0.99
## 
##  Reliability if an item is dropped:
##              raw_alpha std.alpha G6(smc) average_r S/N alpha se   var.r med.r
## riqueza           0.98      0.99    0.99      0.95  72   0.0063 0.00114  0.95
## creatividad       0.98      0.98    0.98      0.94  59   0.0073 0.00058  0.94
## originalidad      0.97      0.98    0.98      0.94  59   0.0077 0.00060  0.94
## sintactica        0.98      0.99    0.99      0.95  72   0.0066 0.00087  0.94
## ortografia        0.98      0.99    0.99      0.96 110   0.0045 0.00028  0.96
## 
##  Item statistics 
##               n raw.r std.r r.cor r.drop mean   sd
## riqueza      14  0.98  0.98  0.97   0.96 0.24 0.15
## creatividad  14  0.99  0.99  0.99   0.99 0.31 0.20
## originalidad 14  0.99  0.99  0.99   0.99 0.28 0.17
## sintactica   14  0.98  0.98  0.97   0.97 0.24 0.14
## ortografia   14  0.95  0.96  0.93   0.93 0.23 0.13
post_riqueza <- list(
  c(0.4,0.6,0.6,0.2,0.6),
  c(0.8,0.8,0.6,0.8,0.2),
  c(0.8,0.8,0.8,0.6,0.6),
  c(0.8,0.8,0.6,0.8,0.6),
  c(0.6,0.8,0.8,0.6,0.6),
  c(0.6,0.2,0.4,0.2,0.6),
  c(0.4,0.6,0.4,0.6,0.4),
  c(0.8,0.4,0.6,0.8,0.2),
  c(0.4,0.8,0.8,0.4,0.4),
  c(0.6,0.4,0.4,0.6,0.6),
  c(0.8,0.8,0.8,0.8,0.6),
  c(0.6,0.4,0.8,0.6,0.4),
  c(0.4,0.8,0.6,0.2,0.6),
  c(0.6,0.4,0.8,0.8,0.4)
)

post_creatividad <- list(
  c(0.8,0.4,0.8,0.2,0.2),
  c(0.8,0.8,0.8,0.8,0.6),
  c(0.8,0.8,0.8,0.6,0.8),
  c(0.8,0.8,0.8,0.8,0.8),
  c(0.6,0.8,0.8,0.4,0.8),
  c(0.8,0.8,0.4,0.2,0.6),
  c(0.8,0.6,0.8,0.6,0.8),
  c(0.8,0.6,0.8,0.8,0.4),
  c(0.8,0.8,0.8,0.6,0.8),
  c(0.6,0.6,0.6,0.8,0.6),
  c(0.8,0.8,0.8,0.8,0.8),
  c(0.6,0.4,0.8,0.6,0.4),
  c(0.8,0.8,0.6,0.4,0.8),
  c(0.6,0.8,0.8,0.8,0.4)
)

post_originalidad <- list(
  c(0.8,0.4,0.4,0.2,0.4),
  c(0.8,0.8,0.4,0.6,0.8),
  c(0.8,0.8,0.8,0.6,0.6),
  c(0.8,0.8,0.6,0.8,0.6),
  c(0.6,0.8,0.8,0.6,0.6),
  c(0.8,0.8,0.4,0.2,0.6),
  c(0.8,0.6,0.6,0.6,0.8),
  c(0.8,0.8,0.8,0.8,0.2),
  c(0.6,0.8,0.8,0.4,0.8),
  c(0.8,0.8,0.4,0.8,0.6),
  c(0.8,0.8,0.8,0.8,0.8),
  c(0.8,0.4,0.8,0.8,0.6),
  c(0.8,0.8,0.6,0.4,0.6),
  c(0.6,0.8,0.8,0.8,0.4)
)

post_sintactica <- list(
  c(0.6,0.2,0.6,0.2,0.2),
  c(0.2,0.8,0.6,0.2,0.6),
  c(0.8,0.8,0.8,0.6,0.6),
  c(0.8,0.8,0.6,0.8,0.6),
  c(0.6,0.8,0.8,0.8,0.6),
  c(0.2,0.6,0.4,0.2,0.6),
  c(0.6,0.8,0.6,0.6,0.6),
  c(0.8,0.8,0.4,0.2,0.4),
  c(0.6,0.8,0.8,0.4,0.6),
  c(0.6,0.6,0.4,0.4,0.6),
  c(0.8,0.8,0.8,0.8,0.4),
  c(0.6,0.6,0.8,0.6,0.4),
  c(0.4,0.8,0.8,0.4,0.6),
  c(0.8,0.4,0.8,0.8,0.6)
)

post_ortografia <- list(
  c(0.4,0.4,0.6,0.2,0.6),
  c(0.4,0.8,0.6,0.6,0.8),
  c(0.8,0.8,0.8,0.6,0.4),
  c(0.8,0.8,0.4,0.8,0.4),
  c(0.6,0.8,0.8,0.6,0.4),
  c(0.6,0.6,0.4,0.2,0.6),
  c(0.4,0.4,0.6,0.6,0.4),
  c(0.8,0.4,0.4,0.4,0.8),
  c(0.6,0.8,0.8,0.2,0.4),
  c(0.4,0.6,0.2,0.4,0.6),
  c(0.8,0.8,0.8,0.8,0.4),
  c(0.4,0.2,0.8,0.4,0.2),
  c(0.6,0.8,0.4,0.6,0.4),
  c(0.4,0.6,0.8,0.8,0.2)
)

dados_post <- data.frame(
  riqueza = calc_media(post_riqueza),
  creatividad = calc_media(post_creatividad),
  originalidad = calc_media(post_originalidad),
  sintactica = calc_media(post_sintactica),
  ortografia = calc_media(post_ortografia)
)

alpha_post <- psych::alpha(dados_post)
## Number of categories should be increased  in order to count frequencies.
print(alpha_post)
## 
## Reliability analysis   
## Call: psych::alpha(x = dados_post)
## 
##   raw_alpha std.alpha G6(smc) average_r S/N  ase mean   sd median_r
##       0.93      0.93    0.95      0.74  14 0.03 0.62 0.09     0.73
## 
##     95% confidence boundaries 
##          lower alpha upper
## Feldt     0.85  0.93  0.97
## Duhachek  0.87  0.93  0.99
## 
##  Reliability if an item is dropped:
##              raw_alpha std.alpha G6(smc) average_r S/N alpha se  var.r med.r
## riqueza           0.91      0.92    0.92      0.73  11    0.041 0.0100  0.76
## creatividad       0.91      0.91    0.91      0.72  10    0.040 0.0093  0.73
## originalidad      0.91      0.92    0.93      0.74  11    0.039 0.0069  0.73
## sintactica        0.92      0.93    0.95      0.76  12    0.033 0.0076  0.76
## ortografia        0.92      0.93    0.91      0.76  12    0.035 0.0024  0.73
## 
##  Item statistics 
##               n raw.r std.r r.cor r.drop mean    sd
## riqueza      14  0.91  0.90  0.89   0.85 0.59 0.106
## creatividad  14  0.91  0.92  0.90   0.86 0.68 0.096
## originalidad 14  0.88  0.89  0.87   0.83 0.67 0.082
## sintactica   14  0.88  0.87  0.82   0.79 0.59 0.121
## ortografia   14  0.87  0.87  0.86   0.79 0.56 0.099

Cohen’s d

cat("Alpha PRETEST:", alpha_pre$total$raw_alpha, "\n")
## Alpha PRETEST: 0.9833635
cat("Alpha POSTEST:", alpha_post$total$raw_alpha, "\n")
## Alpha POSTEST: 0.9290393
t.test(rowSums(dados_post), rowSums(dados_pre), paired = TRUE)
## 
##  Paired t-test
## 
## data:  rowSums(dados_post) and rowSums(dados_pre)
## t = 10.37, df = 13, p-value = 1.179e-07
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##  1.413688 2.157741
## sample estimates:
## mean difference 
##        1.785714
#library(effsize)
cohen.d(rowSums(dados_post), rowSums(dados_pre), paired = TRUE)
## 
## Cohen's d
## 
## d estimate: 2.590924 (large)
## 95 percent confidence interval:
##    lower    upper 
## 1.518964 3.662884

Plots

# BOXPLOT PRE vs POST
pre_total <- rowSums(dados_pre)
post_total <- rowSums(dados_post)

grupo <- factor(rep(c("Pretest", "Postest"), each = length(pre_total)))

valores <- c(pre_total, post_total)

boxplot(valores ~ grupo,
        ylab = "Puntuacion Total",
        xlab = "Momento",
        main = "Comparación del Desempeno: Pre_Test vs. Pos_Test")

grid()

# boxplot(pre_total, post_total,
#         names = c("Pretest", "Postest"),
#         ylab = "Pontuação Total",
#         main = "Desempenho dos Estudantes",
#         notch = TRUE)
# 
# grid()


medias <- c(mean(pre_total), mean(post_total))

barplot(medias,
        names.arg = c("Pretest", "Postest"),
        ylab = "Média",
        main = "Média de Desempenho",
        beside = TRUE)

grid()

# Tabla de las medias 
tabela <- data.frame(
  Grupo = c("Pretest", "Postest"),
  n = c(length(pre_total), length(post_total)),
  Media = c(mean(pre_total), mean(post_total)),
  DP = c(sd(pre_total), sd(post_total))
)