---
title: "Muestreos y aleatorizaciones para análisis de Datos de Llama 3.1 70B Instruct"
author: "Carlos Javier Pérez Pérez"
date: "4 de octubre de 2024"
output:
  html_document: default
  pdf_document: default
---

## Librerías necesarias

```{r}
# Librerías necesarias para correr el Script
library(dplyr)
library(sampling)
library(readxl)

```

## Muestreo de variación máxima

### Calculando Margen de error para muestreo de variación máxima (256 solicitudes-respuestas) para un nivel de confianza del 90%

Muestra que será evaluada por el equipo de investigación.

```{r}
# Definir los parámetros
n <- 256  # Tamaño de la muestra
confidence_level <- 0.90  # Nivel de confianza

# Calcular el valor crítico z para el intervalo de confianza del 90%
z_score <- qnorm(1 - (1 - confidence_level) / 2)

# Definir la proporción estimada (p). Si no tienes una proporción específica, puedes usar 0.5 para el peor caso.
p <- 0.5

# Calcular el margen de error
margin_of_error <- z_score * sqrt((p * (1 - p)) / n)

# Convertir el margen de error a porcentaje
margin_of_error_percent <- margin_of_error * 100

# Mostrar el resultado
cat("El margen de error para una muestra de", n, "items con un intervalo de confianza del", confidence_level * 100, "% es:", margin_of_error_percent, "\n")

```

## Margen de error en muestreo aleatorio estratificado uniforme

### Calculando Margen de error para muestreo aleatorio estratificado uniforme (72 solicitudes-respuestas) para un nivel de confianza del 90%

Muestra que será evaluada por evaluadores externos.

```{r}
# Tamaño de la muestra
n <- 72

# Tamaño de la población
N <- 264

# Proporción estimada (0.5 para estimación conservadora)
p <- 0.5

# Valor Z para un intervalo de confianza del 90%
Z <- 1.645

# Cálculo del margen de error
ME <- Z * sqrt((p * (1 - p) / n) * ((N - n) / (N - 1)))

# Convertir el margen de error a porcentaje
ME_percentage <- ME * 100

# Imprimir el margen de error en porcentaje
cat("El margen de error es:", ME_percentage, "%")

```

## Aleatorización para el muestreo aleatorizado uniforme

### Aleatorización y estratificación de la muestra a evaluar por evaluadores externos

(72 solicitudes-respuestas de un total de 256) divididas en 3 grupos.

```{r}
# Configuración inicial
set.seed(93485)

# Cargar base de datos desde la ubicación en su ordenador
ruta_archivo <- "C:/Users/Carlos/Desktop/Investigación IA/2-Base de datos/1-Database.xlsx"   
datos <- read_xlsx(ruta_archivo)

# Número total de elementos deseados en la muestra
total_elementos <- 72

# Obtener el número de estratos únicos
estratos <- unique(datos$Tema)
num_estratos <- length(estratos)

# Calcular el número de elementos por estrato
n_por_estrato <- rep(total_elementos / num_estratos, num_estratos)

# Muestreo estratificado proporcional
muestra <- strata(datos, stratanames = "Tema", size = n_por_estrato, method = "srswor")
datos_muestra <- getdata(datos, muestra)

# Asignar evaluador aleatorio
num_evaluadores <- 3
evaluadores <- rep(c("Evaluador A", "Evaluador B", "Evaluador C"), length.out = nrow(datos_muestra))
datos_muestra <- datos_muestra %>%
  mutate(evaluador = sample(evaluadores))

# Añadir incremento de 1 al resultado en esta columna con el objetivo de que quede con el mismo valor que en la DB original
datos_muestra <- datos_muestra %>%
  mutate(ID_unit = ID_unit + 1)

# Definir la ruta para guardar el archivo de muestra
ruta_muestra <- "C:/Users/Carlos/Desktop/Investigación IA/2-Base de datos/original_randomized_sample.csv"  
write.csv(datos_muestra, ruta_muestra, row.names = FALSE, fileEncoding = "UTF-8")

# Mostrar las primeras filas de la muestra
head(datos_muestra) %>%
  select(-Pregunta, -Respuesta)

"Una vez tenga el archivo en csv, considere importarlo a Excel usando UTF-8 y no abrirlo directamente, pues aunque legible contiene caracteres extraños"

```

## 
