This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
summary(cars)
## speed dist
## Min. : 4.0 Min. : 2.00
## 1st Qu.:12.0 1st Qu.: 26.00
## Median :15.0 Median : 36.00
## Mean :15.4 Mean : 42.98
## 3rd Qu.:19.0 3rd Qu.: 56.00
## Max. :25.0 Max. :120.00
#El presente análisis estadístico tiene como finalidad evaluar y comparar la microdureza superficial de cinco materiales de resina compuesta utilizados en odontología.
#La variable dependiente corresponde a la microdureza superficial expresada en unidades Vickers (HV), mientras #que la variable independiente corresponde al tipo de material restaurador.
#Se analizaron cinco grupos:
#1. Filtek Z350 XT A2 (grupo control). #2. Simplishade. #3. Filtek Easy Match. #4. Vittra APS Unique. #5. Transcend.
#La unidad experimental considerada para el análisis es el disco de resina. Cuando existen varias indentaciones en un mismo disco, estas se resumen mediante su promedio para evitar la pseudorreplicación.
#Comparar los valores de microdureza superficial entre los cinco grupos de resinas mediante procedimientos estadísticos descriptivos e inferenciales.
#Hipótesis nula (H0):
#Las medias de microdureza superficial son iguales entre los cinco grupos de resinas.
#Hipótesis alternativa (H1):
#Al menos uno de los grupos presenta una media de microdureza superficial diferente.
#Se establece un nivel de significancia de 0.05.
##Instalación y carga de paquetes
# Instalar paquetes solamente si no están disponibles
paquetes <- c(
"readxl",
"tidyverse",
"ggplot2",
"dplyr",
"tidyr",
"car",
"rstatix",
"effectsize",
"knitr",
"broom",
"FSA"
)
instalar <- paquetes[
!paquetes %in% installed.packages()[, "Package"]
]
if(length(instalar) > 0){
install.packages(
instalar,
repos = "https://cloud.r-project.org"
)
}
# Cargar librerías
library(readxl)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)
library(dplyr)
library(tidyr)
library(car)
## Cargando paquete requerido: carData
##
## Adjuntando el paquete: 'car'
##
## The following object is masked from 'package:dplyr':
##
## recode
##
## The following object is masked from 'package:purrr':
##
## some
library(rstatix)
##
## Adjuntando el paquete: 'rstatix'
##
## The following object is masked from 'package:stats':
##
## filter
library(effectsize)
##
## Adjuntando el paquete: 'effectsize'
##
## The following objects are masked from 'package:rstatix':
##
## cohens_d, eta_squared, omega_squared
library(knitr)
library(broom)
library(FSA)
## Warning: package 'FSA' was built under R version 4.4.3
## Registered S3 methods overwritten by 'FSA':
## method from
## confint.boot car
## hist.boot car
## ## FSA v0.10.0. See citation('FSA') if used in publication.
## ## Run fishR() for related website and fishR('IFAR') for related book.
##
## Adjuntando el paquete: 'FSA'
##
## The following object is masked from 'package:car':
##
## bootCase
# Configuración general
options(
scipen = 999,
digits = 4
)
set.seed(123)
##Importación del conjunto de datos
library(readxl)
datosv <- read_excel("D:/usuario nuevo/Downloads/datosv.xlsx")
## New names:
## • `` -> `...1`
## • `` -> `...6`
View(datosv)
# Examinar estructura
dim(datosv)
## [1] 25 10
head(datosv, 30)
## # A tibble: 25 × 10
## ...1 `78.6` `80.7` `79.3` `79.5` ...6 `60.0` `57.2` `59.0` `56.4`
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 GRUPO 1 Z350 78.5 81.5 78.8 81.8 GRUP… 52.8 54.0 52.9 57.0
## 2 <NA> 83.1 82.6 78.7 78.0 <NA> 58.0 55.8 54.5 55.5
## 3 <NA> 84.8 77.5 87.5 81.4 <NA> 52.9 51.2 54.0 53.2
## 4 <NA> 78.6 83.0 81.5 83.6 <NA> 52.6 56.8 57.2 54.6
## 5 <NA> 80.9 83.0 86.1 87.2 <NA> 60.0 56.5 61.4 53.1
## 6 <NA> 79.7 80.8 84.0 81.0 <NA> 59.2 56.7 58.0 56.7
## 7 <NA> 82.7 83.1 79.6 82.8 <NA> 53.6 58.8 58.6 51.8
## 8 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 9 GRUPO 2 Simpl… 66.9 66.3 62.5 59.1 GRUP… 71.7 69.9 68.4 67.5
## 10 <NA> 64.5 67.4 63.5 69.1 <NA> 79.2 75.9 78.5 78.1
## # ℹ 15 more rows
# Importar el archivo conservando las filas y columnas originales
datos_originales <- read_excel(
file.choose(),
range = "A1:K27",
col_names = FALSE
)
## New names:
## • `` -> `...1`
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
# Verificar dimensiones
dim(datos_originales)
## [1] 27 11
# Visualizar estructura completa
print(datos_originales, n = Inf)
## # A tibble: 27 × 11
## ...1 ...2 ...3 ...4 ...5 ...6 ...7 ...8 ...9 ...10 ...11
## <lgl> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 NA <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 2 NA <NA> 78.6 80.7 79.3 79.5 <NA> 60.0 57.2 59.0 56.4
## 3 NA GRUPO 1 Z350 78.5 81.5 78.8 81.8 GRUP… 52.8 54.0 52.9 57.0
## 4 NA <NA> 83.1 82.6 78.7 78.0 <NA> 58.0 55.8 54.5 55.5
## 5 NA <NA> 84.8 77.5 87.5 81.4 <NA> 52.9 51.2 54.0 53.2
## 6 NA <NA> 78.6 83.0 81.5 83.6 <NA> 52.6 56.8 57.2 54.6
## 7 NA <NA> 80.9 83.0 86.1 87.2 <NA> 60.0 56.5 61.4 53.1
## 8 NA <NA> 79.7 80.8 84.0 81.0 <NA> 59.2 56.7 58.0 56.7
## 9 NA <NA> 82.7 83.1 79.6 82.8 <NA> 53.6 58.8 58.6 51.8
## 10 NA <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 11 NA GRUPO 2 Simplis… 66.9 66.3 62.5 59.1 GRUP… 71.7 69.9 68.4 67.5
## 12 NA <NA> 64.5 67.4 63.5 69.1 <NA> 79.2 75.9 78.5 78.1
## 13 NA <NA> 62.7 64.9 66.6 63.4 <NA> 73.7 73.4 78.6 74.8
## 14 NA <NA> 64.9 65.1 60.0 67.9 <NA> 71.1 78.7 74.2 78.4
## 15 NA <NA> 66.5 62.8 64.4 62.6 <NA> 71.0 69.0 68.0 71.3
## 16 NA <NA> 69.5 68.4 65.2 66.8 <NA> 68.0 77.4 69.3 65.5
## 17 NA <NA> 67.2 67.4 61.7 62.0 <NA> 74.1 73.9 74.9 77.9
## 18 NA <NA> 65.8 65.9 60.9 66.8 <NA> 76.1 74.8 76.9 74.7
## 19 NA <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 20 NA GRUPO 3 Easyma… 82.5 77.8 84.9 79.5 <NA> <NA> <NA> <NA> <NA>
## 21 NA <NA> 84.5 82.3 84.7 86.8 <NA> <NA> <NA> <NA> <NA>
## 22 NA <NA> 82.1 86.6 80.1 84.9 <NA> <NA> <NA> <NA> <NA>
## 23 NA <NA> 89.8 89.1 85.4 82.9 <NA> <NA> <NA> <NA> <NA>
## 24 NA <NA> 76.7 78.4 83.6 81.5 <NA> <NA> <NA> <NA> <NA>
## 25 NA <NA> 86.6 88.2 81.2 81.5 <NA> <NA> <NA> <NA> <NA>
## 26 NA <NA> 86.8 79.5 87.5 81.3 <NA> <NA> <NA> <NA> <NA>
## 27 NA <NA> 84.0 80.9 84.9 81.5 <NA> <NA> <NA> <NA> <NA>
##Organización de los cinco grupos
# =====================================================
# ORGANIZACIÓN DE LOS CINCO GRUPOS EXPERIMENTALES
# =====================================================
# Función para extraer las cuatro mediciones
# correspondientes a cada disco
extraer_grupo <- function(datos, filas, columnas, nombre) {
# Extraer las mediciones
matriz <- datos[filas, columnas]
# Convertir todas las columnas a formato numérico
matriz <- as.data.frame(
lapply(matriz, function(x) {
as.numeric(as.character(x))
})
)
# Verificar que existan cuatro mediciones
if (ncol(matriz) != 4) {
stop(paste("Error en las columnas del grupo:", nombre))
}
# Verificar valores faltantes
if (any(is.na(matriz))) {
stop(paste("Existen valores faltantes en el grupo:", nombre))
}
# Calcular promedio de las cuatro indentaciones
promedio <- rowMeans(matriz)
# Crear tabla del grupo
resultado <- data.frame(
grupo = nombre,
disco = seq_along(promedio),
microdureza = promedio
)
return(resultado)
}
# =====================================================
# EXTRAER LOS CINCO GRUPOS
# =====================================================
g1 <- extraer_grupo(
datos_originales,
2:9,
3:6,
"Z350 XT Control"
)
g2 <- extraer_grupo(
datos_originales,
11:18,
3:6,
"Simplishade"
)
g3 <- extraer_grupo(
datos_originales,
20:27,
3:6,
"Easy Match"
)
g4 <- extraer_grupo(
datos_originales,
2:9,
8:11,
"Vittra APS Unique"
)
g5 <- extraer_grupo(
datos_originales,
11:18,
8:11,
"Transcend"
)
# =====================================================
# UNIFICAR LOS CINCO GRUPOS
# =====================================================
datos <- rbind(
g1,
g2,
g3,
g4,
g5
)
# =====================================================
# DEFINIR EL ORDEN DE LOS GRUPOS
# =====================================================
datos$grupo <- factor(
datos$grupo,
levels = c(
"Z350 XT Control",
"Simplishade",
"Easy Match",
"Vittra APS Unique",
"Transcend"
)
)
# =====================================================
# VERIFICACIÓN DE LA BASE DE DATOS
# =====================================================
# Mostrar estructura
str(datos)
## 'data.frame': 40 obs. of 3 variables:
## $ grupo : Factor w/ 5 levels "Z350 XT Control",..: 1 1 1 1 1 1 1 1 2 2 ...
## $ disco : int 1 2 3 4 5 6 7 8 1 2 ...
## $ microdureza: num 79.5 80.2 80.6 82.8 81.7 ...
# Mostrar registros
print(datos)
## grupo disco microdureza
## 1 Z350 XT Control 1 79.53
## 2 Z350 XT Control 2 80.15
## 3 Z350 XT Control 3 80.60
## 4 Z350 XT Control 4 82.80
## 5 Z350 XT Control 5 81.67
## 6 Z350 XT Control 6 84.30
## 7 Z350 XT Control 7 81.38
## 8 Z350 XT Control 8 82.05
## 9 Simplishade 1 63.70
## 10 Simplishade 2 66.12
## 11 Simplishade 3 64.40
## 12 Simplishade 4 64.47
## 13 Simplishade 5 64.08
## 14 Simplishade 6 67.47
## 15 Simplishade 7 64.58
## 16 Simplishade 8 64.85
## 17 Easy Match 1 81.17
## 18 Easy Match 2 84.58
## 19 Easy Match 3 83.42
## 20 Easy Match 4 86.80
## 21 Easy Match 5 80.05
## 22 Easy Match 6 84.38
## 23 Easy Match 7 83.78
## 24 Easy Match 8 82.83
## 25 Vittra APS Unique 1 58.15
## 26 Vittra APS Unique 2 54.17
## 27 Vittra APS Unique 3 55.95
## 28 Vittra APS Unique 4 52.83
## 29 Vittra APS Unique 5 55.30
## 30 Vittra APS Unique 6 57.75
## 31 Vittra APS Unique 7 57.65
## 32 Vittra APS Unique 8 55.70
## 33 Transcend 1 69.38
## 34 Transcend 2 77.92
## 35 Transcend 3 75.12
## 36 Transcend 4 75.60
## 37 Transcend 5 69.83
## 38 Transcend 6 70.05
## 39 Transcend 7 75.20
## 40 Transcend 8 75.62
# Número de discos por grupo
print(table(datos$grupo))
##
## Z350 XT Control Simplishade Easy Match Vittra APS Unique
## 8 8 8 8
## Transcend
## 8
# Número total de discos
cat("Total de discos:", nrow(datos), "\n")
## Total de discos: 40
# Valores faltantes
cat(
"Valores faltantes:",
sum(is.na(datos$microdureza)),
"\n"
)
## Valores faltantes: 0
# Verificar que existan 40 discos
stopifnot(nrow(datos) == 40)
# Verificar ocho discos por grupo
stopifnot(all(table(datos$grupo) == 8))
# Verificar ausencia de valores faltantes
stopifnot(!any(is.na(datos$microdureza)))
cat("Base de datos organizada correctamente.")
## Base de datos organizada correctamente.
#Transformamos la base original a formato largo, donde cada fila representa un disco y su promedio de microdureza. Esto permite realizar comparaciones independientes entre los cinco materiales, siempre que los discos sean efectivamente las unidades experimentales independientes. El resultado esperado es una base de 40 filas, con ocho discos en cada grupo.
##Verificación de la estructura y calidad de los datos
# Estructura de la base
str(datos)
## 'data.frame': 40 obs. of 3 variables:
## $ grupo : Factor w/ 5 levels "Z350 XT Control",..: 1 1 1 1 1 1 1 1 2 2 ...
## $ disco : int 1 2 3 4 5 6 7 8 1 2 ...
## $ microdureza: num 79.5 80.2 80.6 82.8 81.7 ...
# Número de observaciones
nrow(datos)
## [1] 40
# Número de grupos
nlevels(datos$grupo)
## [1] 5
# Número de discos por grupo
datos %>%
count(grupo)
## grupo n
## 1 Z350 XT Control 8
## 2 Simplishade 8
## 3 Easy Match 8
## 4 Vittra APS Unique 8
## 5 Transcend 8
# Estadísticos generales
summary(datos$microdureza)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 52.8 64.3 75.2 71.9 81.5 86.8
# Identificar valores faltantes
datos %>%
filter(is.na(microdureza))
## [1] grupo disco microdureza
## <0 rows> (o 0- extensión row.names)
# Identificar valores no positivos
datos %>%
filter(microdureza <= 0)
## [1] grupo disco microdureza
## <0 rows> (o 0- extensión row.names)
# Importar el archivo conservando las filas y columnas originales
datos_originales <- read_excel(
file.choose(),
range = "A1:K27",
col_names = FALSE
)
## New names:
## • `` -> `...1`
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
# Verificar dimensiones
dim(datos_originales)
## [1] 27 11
# Visualizar estructura completa
print(datos_originales, n = Inf)
## # A tibble: 27 × 11
## ...1 ...2 ...3 ...4 ...5 ...6 ...7 ...8 ...9 ...10 ...11
## <lgl> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 NA <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 2 NA <NA> 78.6 80.7 79.3 79.5 <NA> 60.0 57.2 59.0 56.4
## 3 NA GRUPO 1 Z350 78.5 81.5 78.8 81.8 GRUP… 52.8 54.0 52.9 57.0
## 4 NA <NA> 83.1 82.6 78.7 78.0 <NA> 58.0 55.8 54.5 55.5
## 5 NA <NA> 84.8 77.5 87.5 81.4 <NA> 52.9 51.2 54.0 53.2
## 6 NA <NA> 78.6 83.0 81.5 83.6 <NA> 52.6 56.8 57.2 54.6
## 7 NA <NA> 80.9 83.0 86.1 87.2 <NA> 60.0 56.5 61.4 53.1
## 8 NA <NA> 79.7 80.8 84.0 81.0 <NA> 59.2 56.7 58.0 56.7
## 9 NA <NA> 82.7 83.1 79.6 82.8 <NA> 53.6 58.8 58.6 51.8
## 10 NA <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 11 NA GRUPO 2 Simplis… 66.9 66.3 62.5 59.1 GRUP… 71.7 69.9 68.4 67.5
## 12 NA <NA> 64.5 67.4 63.5 69.1 <NA> 79.2 75.9 78.5 78.1
## 13 NA <NA> 62.7 64.9 66.6 63.4 <NA> 73.7 73.4 78.6 74.8
## 14 NA <NA> 64.9 65.1 60.0 67.9 <NA> 71.1 78.7 74.2 78.4
## 15 NA <NA> 66.5 62.8 64.4 62.6 <NA> 71.0 69.0 68.0 71.3
## 16 NA <NA> 69.5 68.4 65.2 66.8 <NA> 68.0 77.4 69.3 65.5
## 17 NA <NA> 67.2 67.4 61.7 62.0 <NA> 74.1 73.9 74.9 77.9
## 18 NA <NA> 65.8 65.9 60.9 66.8 <NA> 76.1 74.8 76.9 74.7
## 19 NA <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
## 20 NA GRUPO 3 Easyma… 82.5 77.8 84.9 79.5 <NA> <NA> <NA> <NA> <NA>
## 21 NA <NA> 84.5 82.3 84.7 86.8 <NA> <NA> <NA> <NA> <NA>
## 22 NA <NA> 82.1 86.6 80.1 84.9 <NA> <NA> <NA> <NA> <NA>
## 23 NA <NA> 89.8 89.1 85.4 82.9 <NA> <NA> <NA> <NA> <NA>
## 24 NA <NA> 76.7 78.4 83.6 81.5 <NA> <NA> <NA> <NA> <NA>
## 25 NA <NA> 86.6 88.2 81.2 81.5 <NA> <NA> <NA> <NA> <NA>
## 26 NA <NA> 86.8 79.5 87.5 81.3 <NA> <NA> <NA> <NA> <NA>
## 27 NA <NA> 84.0 80.9 84.9 81.5 <NA> <NA> <NA> <NA> <NA>
#Este análisis responde a la primera pregunta: ¿cuáles son los valores de microdureza de cada material?
#Calcularemos: #- Número de muestras. #- Media. #- Desviación estándar. #- Mediana. #- Mínimo y máximo. #- Primer y tercer cuartil. #- Rango intercuartílico.
# Función para extraer las cuatro indentaciones
# correspondientes a cada disco
extraer_grupo <- function(datos, filas, columnas, nombre){
matriz <- datos[
filas,
columnas
] %>%
as.data.frame()
# Convertir mediciones a formato numérico
matriz <- matriz %>%
mutate(
across(
everything(),
as.numeric
)
)
# Verificar que existan cuatro mediciones
# completas por disco
if(any(!complete.cases(matriz))){
stop(
paste(
"Existen mediciones faltantes en el grupo:",
nombre
)
)
}
# Calcular promedio de las cuatro indentaciones
promedio <- rowMeans(matriz)
# Crear base de datos por disco
tibble(
grupo = nombre,
disco = seq_along(promedio),
microdureza = promedio
)
}
# Grupo 1: Filtek Z350 XT Control
g1 <- extraer_grupo(
datos_originales,
2:9,
3:6,
"Z350 XT Control"
)
# Grupo 2: Simplishade
g2 <- extraer_grupo(
datos_originales,
11:18,
3:6,
"Simplishade"
)
# Grupo 3: Filtek Easy Match
g3 <- extraer_grupo(
datos_originales,
20:27,
3:6,
"Easy Match"
)
# Grupo 4: Vittra APS Unique
g4 <- extraer_grupo(
datos_originales,
2:9,
8:11,
"Vittra APS Unique"
)
# Grupo 5: Transcend
g5 <- extraer_grupo(
datos_originales,
11:18,
8:11,
"Transcend"
)
# Unificar los grupos
datos <- bind_rows(
g1, g2, g3, g4, g5
)
# Ordenar los grupos
datos$grupo <- factor(
datos$grupo,
levels = c(
"Z350 XT Control",
"Simplishade",
"Easy Match",
"Vittra APS Unique",
"Transcend"
)
)
# Verificar estructura
str(datos)
## tibble [40 × 3] (S3: tbl_df/tbl/data.frame)
## $ grupo : Factor w/ 5 levels "Z350 XT Control",..: 1 1 1 1 1 1 1 1 2 2 ...
## $ disco : int [1:40] 1 2 3 4 5 6 7 8 1 2 ...
## $ microdureza: num [1:40] 79.5 80.2 80.6 82.8 81.7 ...
# Verificar cantidad de discos
table(datos$grupo)
##
## Z350 XT Control Simplishade Easy Match Vittra APS Unique
## 8 8 8 8
## Transcend
## 8
# Verificar valores faltantes
sum(is.na(datos$microdureza))
## [1] 0
# Mostrar base definitiva
print(datos, n = Inf)
## # A tibble: 40 × 3
## grupo disco microdureza
## <fct> <int> <dbl>
## 1 Z350 XT Control 1 79.5
## 2 Z350 XT Control 2 80.2
## 3 Z350 XT Control 3 80.6
## 4 Z350 XT Control 4 82.8
## 5 Z350 XT Control 5 81.7
## 6 Z350 XT Control 6 84.3
## 7 Z350 XT Control 7 81.4
## 8 Z350 XT Control 8 82.0
## 9 Simplishade 1 63.7
## 10 Simplishade 2 66.1
## 11 Simplishade 3 64.4
## 12 Simplishade 4 64.5
## 13 Simplishade 5 64.1
## 14 Simplishade 6 67.5
## 15 Simplishade 7 64.6
## 16 Simplishade 8 64.8
## 17 Easy Match 1 81.2
## 18 Easy Match 2 84.6
## 19 Easy Match 3 83.4
## 20 Easy Match 4 86.8
## 21 Easy Match 5 80.0
## 22 Easy Match 6 84.4
## 23 Easy Match 7 83.8
## 24 Easy Match 8 82.8
## 25 Vittra APS Unique 1 58.2
## 26 Vittra APS Unique 2 54.2
## 27 Vittra APS Unique 3 56.0
## 28 Vittra APS Unique 4 52.8
## 29 Vittra APS Unique 5 55.3
## 30 Vittra APS Unique 6 57.8
## 31 Vittra APS Unique 7 57.6
## 32 Vittra APS Unique 8 55.7
## 33 Transcend 1 69.4
## 34 Transcend 2 77.9
## 35 Transcend 3 75.1
## 36 Transcend 4 75.6
## 37 Transcend 5 69.8
## 38 Transcend 6 70.0
## 39 Transcend 7 75.2
## 40 Transcend 8 75.6
# Estadística descriptiva
tabla_descriptiva <- datos %>%
group_by(grupo) %>%
summarise(
n = n(),
Media = mean(microdureza),
DE = sd(microdureza),
Mediana = median(microdureza),
Minimo = min(microdureza),
Maximo = max(microdureza),
Q1 = quantile(microdureza, 0.25),
Q3 = quantile(microdureza, 0.75),
RIC = IQR(microdureza),
.groups = "drop"
)
# Presentar resultados
knitr::kable(
tabla_descriptiva,
digits = 2,
caption = "Tabla 1. Estadísticos descriptivos de microdureza superficial Vickers por grupo"
)
| grupo | n | Media | DE | Mediana | Minimo | Maximo | Q1 | Q3 | RIC |
|---|---|---|---|---|---|---|---|---|---|
| Z350 XT Control | 8 | 81.56 | 1.53 | 81.53 | 79.53 | 84.30 | 80.49 | 82.24 | 1.75 |
| Simplishade | 8 | 64.96 | 1.24 | 64.53 | 63.70 | 67.47 | 64.32 | 65.17 | 0.85 |
| Easy Match | 8 | 83.38 | 2.09 | 83.60 | 80.05 | 86.80 | 82.41 | 84.42 | 2.01 |
| Vittra APS Unique | 8 | 55.94 | 1.87 | 55.83 | 52.83 | 58.15 | 55.02 | 57.68 | 2.66 |
| Transcend | 8 | 73.59 | 3.30 | 75.16 | 69.38 | 77.92 | 69.99 | 75.61 | 5.61 |
##Intervalos de confianza del 95%
tabla_ic <- datos %>%
group_by(grupo) %>%
summarise(
n = n(),
media = mean(microdureza),
desviacion = sd(microdureza),
error_estandar = desviacion / sqrt(n),
t_critico = qt(0.975, df = n - 1),
IC_inferior =
media - t_critico * error_estandar,
IC_superior =
media + t_critico * error_estandar,
.groups = "drop"
)
kable(
tabla_ic,
digits = 2,
caption = "Tabla 2. Medias e intervalos de confianza del 95% de microdureza Vickers"
)
| grupo | n | media | desviacion | error_estandar | t_critico | IC_inferior | IC_superior |
|---|---|---|---|---|---|---|---|
| Z350 XT Control | 8 | 81.56 | 1.53 | 0.54 | 2.36 | 80.28 | 82.84 |
| Simplishade | 8 | 64.96 | 1.24 | 0.44 | 2.36 | 63.92 | 66.00 |
| Easy Match | 8 | 83.38 | 2.09 | 0.74 | 2.36 | 81.63 | 85.12 |
| Vittra APS Unique | 8 | 55.94 | 1.87 | 0.66 | 2.36 | 54.38 | 57.50 |
| Transcend | 8 | 73.59 | 3.30 | 1.17 | 2.36 | 70.83 | 76.35 |
#Interpretación: un intervalo de confianza más estrecho indica mayor precisión en la estimación de la media. Sin embargo, los intervalos individuales no sustituyen las comparaciones estadísticas entre grupos.
##Gráfico de medias con intervalos de confianza
ggplot(
tabla_ic,
aes(
x = grupo,
y = media
)
) +
geom_col(
fill = "steelblue",
width = 0.65
) +
geom_errorbar(
aes(
ymin = IC_inferior,
ymax = IC_superior
),
width = 0.18,
linewidth = 0.8
) +
labs(
title = "Microdureza superficial de las resinas",
subtitle = "Media e intervalo de confianza del 95%",
x = "Material restaurador",
y = "Microdureza Vickers (HV)"
) +
theme_classic() +
theme(
axis.text.x = element_text(
angle = 25,
hjust = 1
),
plot.title = element_text(
face = "bold",
size = 14
)
)
#permite comparar visualmente los promedios y la precisión de las
estimaciones de cada grupo.
##Diagrama de cajas (Boxplot)
ggplot(
datos,
aes(
x = grupo,
y = microdureza,
fill = grupo
)
) +
geom_boxplot(
alpha = 0.7,
outlier.shape = NA
) +
geom_jitter(
width = 0.12,
size = 2,
alpha = 0.8
) +
labs(
title = "Distribución de la microdureza superficial",
x = "Grupo experimental",
y = "Microdureza Vickers (HV)"
) +
theme_classic() +
theme(
legend.position = "none",
axis.text.x = element_text(
angle = 25,
hjust = 1
)
)
#La línea central representa la mediana. #La caja representa el rango intercuartílico. #Los bigotes representan la extensión de los valores no considerados atípicos por la regla del gráfico. #Los puntos representan los discos individuales.
##Identificación de valores atípicos
valores_atipicos <- datos %>%
group_by(grupo) %>%
identify_outliers(
microdureza
)
kable(
valores_atipicos,
digits = 3,
caption = "Tabla 3. Identificación de posibles valores atípicos por grupo"
)
| grupo | disco | microdureza | is.outlier | is.extreme |
|---|---|---|---|---|
| Simplishade | 6 | 67.47 | TRUE | FALSE |
##Normalidad de los residuos
# Modelo ANOVA preliminar
modelo_anova <- aov(
microdureza ~ grupo,
data = datos
)
# Extraer residuos
residuos <- residuals(modelo_anova)
# Prueba de Shapiro-Wilk
shapiro_resultado <- shapiro.test(residuos)
shapiro_resultado
##
## Shapiro-Wilk normality test
##
## data: residuos
## W = 0.98, p-value = 0.8
#Interpretación: no se encuentra evidencia estadísticamente significativa para rechazar el supuesto de normalidad de los residuos (p = 0.8). Por tanto, este supuesto se considera razonablemente satisfecho.
##Homogeneidad de varianzas
# Prueba de Levene
levene_resultado <- car::leveneTest(
microdureza ~ grupo,
data = datos,
center = median
)
levene_resultado
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 4 1.41 0.25
## 35
#Interpretación: no se encontraron diferencias estadísticamente significativas entre las varianzas de los cinco grupos. Por tanto, no existe evidencia suficiente para rechazar el supuesto de homogeneidad de varianzas.
##Gráficos de diagnóstico
# Gráfico Q-Q
qqnorm(
residuos,
main = "Normalidad de los residuos del modelo"
)
qqline(
residuos,
col = "red",
lwd = 2
)
#Se observa cierta desviación en las colas, especialmente en algunos valores inferiores, pero no parece existir una desviación generalizada importante.
# Residuos frente a valores ajustados
plot(
modelo_anova,
which = 1
)
#Estos gráficos permiten complementar las pruebas formales y verificar visualmente el comportamiento de los residuos. #Se observa que los residuos se distribuyen alrededor de cero, sin un patrón sistemático evidente. La línea roja se mantiene relativamente próxima a la línea horizontal de referencia.Sin embargo, aparecen tres observaciones identificadas con los números 33, 34 y 37, que presentan residuos relativamente elevados en valor absoluto. #Estos puntos corresponden a discos del grupo Transcend: #- Observación 33: aproximadamente 69.4 HV. #- Observación 34: aproximadamente 77.9 HV. #- Observación 37: aproximadamente 69.8 HV. #Esto es coherente con la mayor desviación estándar observada en Transcend (3.30 HV).
##ANOVA de una vía #La hipótesis nula plantea que las medias de microdureza de los cinco materiales son iguales #La hipótesis alternativa establece que al menos una media es diferente.
# Ejecutar ANOVA
resultado_anova <- summary(
modelo_anova
)
resultado_anova
## Df Sum Sq Mean Sq F value Pr(>F)
## grupo 4 4246 1062 235 <0.0000000000000002 ***
## Residuals 35 158 5
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#El análisis de varianza de una vía identificó diferencias estadísticamente significativas en la microdureza superficial entre los cinco grupos de resinas evaluados (F(4,35) = 233.52; p menor que 0.001).
#Este resultado permite rechazar la hipótesis nula de igualdad de medias y concluir que al menos uno de los materiales presenta un comportamiento diferente en términos de microdureza superficial.
#Es necesario realizar comparaciones múltiples para identificar específicamente entre cuáles materiales existen diferencias.
##Tamaño del efecto
# Calcular eta cuadrado
eta_resultado <- effectsize::eta_squared(
modelo_anova,
partial = FALSE
)
eta_resultado
## # Effect Size for ANOVA (Type I)
##
## Parameter | Eta2 | 95% CI
## -------------------------------
## grupo | 0.96 | [0.94, 1.00]
##
## - One-sided CIs: upper bound fixed at [1.00].
#El grupo de material representa aproximadamente el 96% de la variabilidad total observada en la microdureza de los discos analizados, dentro del modelo de ANOVA. #Este resultado representa una magnitud de efecto muy elevada. #El tamaño del efecto estimado mediante eta cuadrado fue de 0.96 (IC 95%: 0.94–1.00), lo que evidencia una magnitud de efecto muy elevada. Este hallazgo indica que las diferencias entre los materiales representan una proporción considerable de la variabilidad total de la microdureza superficial observada. Este resultado complementa el valor p del ANOVA y demuestra que las diferencias no solamente son estadísticamente significativas, sino también de gran magnitud en el contexto experimental.
##Comparaciones múltiples de Tukey
# Prueba de Tukey
resultado_tukey <- TukeyHSD(
modelo_anova,
"grupo",
conf.level = 0.95
)
resultado_tukey
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = microdureza ~ grupo, data = datos)
##
## $grupo
## diff lwr upr p adj
## Simplishade-Z350 XT Control -16.600 -19.659 -13.541 0.0000
## Easy Match-Z350 XT Control 1.816 -1.243 4.874 0.4431
## Vittra APS Unique-Z350 XT Control -25.622 -28.680 -22.563 0.0000
## Transcend-Z350 XT Control -7.969 -11.027 -4.910 0.0000
## Easy Match-Simplishade 18.416 15.357 21.474 0.0000
## Vittra APS Unique-Simplishade -9.022 -12.080 -5.963 0.0000
## Transcend-Simplishade 8.631 5.573 11.690 0.0000
## Vittra APS Unique-Easy Match -27.438 -30.496 -24.379 0.0000
## Transcend-Easy Match -9.784 -12.843 -6.726 0.0000
## Transcend-Vittra APS Unique 17.653 14.595 20.712 0.0000
#A. Easy Match frente a Z350 XT (control) #- Diferencia de medias: 1.816 HV. #- IC 95%: -1.243 a 4.874. #- p ajustado: 0.4431. #No se encontraron diferencias estadísticamente significativas.
#Este resultado es interesante porque Easy Match presentó la mayor media de microdureza (83.38 HV), mientras que Z350 XT presentó 81.56 HV.
#Aunque Easy Match presentó un promedio numéricamente superior, no podemos afirmar que tenga mayor microdureza que el control.
#Tampoco podemos afirmar que ambos materiales sean equivalentes.
#B. Simplishade frente a Z350 XT #- Diferencia: -16.600 HV. #- p menor que 0.001. #Simplishade presentó una microdureza significativamente inferior a la del grupo control.
#C. Vittra APS Unique frente a Z350 XT #- Diferencia: -25.622 HV. #- p menor que 0.001. #Vittra APS Unique presentó una microdureza significativamente inferior a la del control. Esta fue una de las mayores diferencias observadas.
#D. Transcend frente a Z350 XT #- Diferencia: -7.969 HV. #- p menor que 0.001. #Transcend presentó una microdureza significativamente inferior a la del grupo control.
#E. Comparación entre las cuatro resinas experimentales
#También encontramos diferencias significativas entre todas las comparaciones posibles de los grupos experimentales: #- Easy Match presentó mayor microdureza que Simplishade. #- Easy Match presentó mayor microdureza que Vittra APS Unique. #- Easy Match presentó mayor microdureza que Transcend. #- Transcend presentó mayor microdureza que Simplishade. #- Transcend presentó mayor microdureza que Vittra APS Unique. #- Simplishade presentó mayor microdureza que Vittra APS Unique. #Por tanto, las cuatro resinas experimentales no presentaron un comportamiento homogéneo en cuanto a microdureza superficial.
#Agrupación estadística de Tukey #- Grupo A: Easy Match y Z350 XT. #- Grupo B: Transcend. #- Grupo C: Simplishade. #- Grupo D: Vittra APS Unique.
##Tabla resultados
# Convertir resultados en tabla
tabla_tukey <- as.data.frame(
resultado_tukey$grupo
)
tabla_tukey$Comparacion <- rownames(
tabla_tukey
)
tabla_tukey <- tabla_tukey %>%
select(
Comparacion,
diff,
lwr,
upr,
`p adj`
)
colnames(tabla_tukey) <- c(
"Comparación",
"Diferencia de medias",
"IC inferior",
"IC superior",
"Valor p ajustado"
)
knitr::kable(
tabla_tukey,
digits = 4,
caption = "Tabla 2. Comparaciones múltiples de microdureza mediante Tukey"
)
| Comparación | Diferencia de medias | IC inferior | IC superior | Valor p ajustado | |
|---|---|---|---|---|---|
| Simplishade-Z350 XT Control | Simplishade-Z350 XT Control | -16.600 | -19.659 | -13.541 | 0.0000 |
| Easy Match-Z350 XT Control | Easy Match-Z350 XT Control | 1.816 | -1.243 | 4.874 | 0.4431 |
| Vittra APS Unique-Z350 XT Control | Vittra APS Unique-Z350 XT Control | -25.622 | -28.680 | -22.563 | 0.0000 |
| Transcend-Z350 XT Control | Transcend-Z350 XT Control | -7.969 | -11.027 | -4.910 | 0.0000 |
| Easy Match-Simplishade | Easy Match-Simplishade | 18.416 | 15.357 | 21.474 | 0.0000 |
| Vittra APS Unique-Simplishade | Vittra APS Unique-Simplishade | -9.022 | -12.080 | -5.963 | 0.0000 |
| Transcend-Simplishade | Transcend-Simplishade | 8.631 | 5.573 | 11.690 | 0.0000 |
| Vittra APS Unique-Easy Match | Vittra APS Unique-Easy Match | -27.438 | -30.496 | -24.379 | 0.0000 |
| Transcend-Easy Match | Transcend-Easy Match | -9.784 | -12.843 | -6.726 | 0.0000 |
| Transcend-Vittra APS Unique | Transcend-Vittra APS Unique | 17.653 | 14.595 | 20.712 | 0.0000 |
# Preparar datos de Tukey
tukey_grafico <- as.data.frame(
resultado_tukey$grupo
)
tukey_grafico$Comparacion <- rownames(
tukey_grafico
)
# Gráfico de diferencias e intervalos
ggplot(
tukey_grafico,
aes(
x = reorder(Comparacion, diff),
y = diff
)
) +
geom_point(
size = 2.8
) +
geom_errorbar(
aes(
ymin = lwr,
ymax = upr
),
width = 0.2
) +
geom_hline(
yintercept = 0,
linetype = "dashed",
color = "red"
) +
coord_flip() +
labs(
title = "Comparaciones múltiples de Tukey",
subtitle = "Diferencias de medias e intervalos de confianza del 95%",
x = "Comparaciones entre materiales",
y = "Diferencia de microdureza (HV)"
) +
theme_classic() +
theme(
plot.title = element_text(
face = "bold"
)
)
#La línea vertical en cero representa ausencia de diferencia entre dos materiales. Cuando el intervalo de confianza no cruza esa línea, la comparación es estadísticamente significativa.
# Restablecer configuración de impresión de valores faltantes
options(na.print = "NA")
# Restablecer opciones numéricas
options(
scipen = 999,
digits = 4
)
# Verificar configuración
getOption("na.print")
## [1] "NA"
##Datos influyentes
# =====================================================
# DIAGNÓSTICO DE RESIDUOS Y DISTANCIA DE COOK
# =====================================================
# Crear tabla de diagnóstico
diagnostico <- data.frame(
grupo = datos$grupo,
disco = datos$disco,
microdureza = datos$microdureza,
residuo = residuals(modelo_anova),
residuo_estandarizado = rstandard(modelo_anova),
distancia_cook = cooks.distance(modelo_anova)
)
# =====================================================
# IDENTIFICAR RESIDUOS ESTANDARIZADOS > 2
# =====================================================
observaciones_residuos <- diagnostico %>%
filter(
abs(residuo_estandarizado) > 2
)
print(observaciones_residuos)
## grupo disco microdureza residuo residuo_estandarizado distancia_cook
## 33 Transcend 1 69.38 -4.216 -2.118 0.1282
## 34 Transcend 2 77.92 4.334 2.178 0.1355
# =====================================================
# IDENTIFICAR DISTANCIAS DE COOK > 4/n
# =====================================================
observaciones_cook <- diagnostico %>%
filter(
distancia_cook > 4/nrow(datos)
)
print(observaciones_cook)
## grupo disco microdureza residuo residuo_estandarizado distancia_cook
## 33 Transcend 1 69.38 -4.216 -2.118 0.1282
## 34 Transcend 2 77.92 4.334 2.178 0.1355
## 37 Transcend 5 69.83 -3.766 -1.892 0.1023
# =====================================================
# MOSTRAR LAS 10 OBSERVACIONES MÁS INFLUYENTES
# =====================================================
diagnostico_ordenado <- diagnostico %>%
arrange(
desc(distancia_cook)
)
head(
diagnostico_ordenado,
10
)
## grupo disco microdureza residuo residuo_estandarizado
## 34 Transcend 2 77.92 4.334 2.178
## 33 Transcend 1 69.38 -4.216 -2.118
## 37 Transcend 5 69.83 -3.766 -1.892
## 38 Transcend 6 70.05 -3.541 -1.779
## 20 Easy Match 4 86.80 3.425 1.721
## 21 Easy Match 5 80.05 -3.325 -1.671
## 28 Vittra APS Unique 4 52.83 -3.112 -1.564
## 6 Z350 XT Control 6 84.30 2.741 1.377
## 14 Simplishade 6 67.47 2.516 1.264
## 25 Vittra APS Unique 1 58.15 2.212 1.112
## distancia_cook
## 34 0.13551
## 33 0.12819
## 37 0.10228
## 38 0.09042
## 20 0.08461
## 21 0.07975
## 28 0.06988
## 6 0.05418
## 14 0.04565
## 25 0.03531
#Residuos estandarizados #- Los discos 1 y 2 presentan residuos estandarizados superiores a 2 en valor absoluto. #- El disco 5 presenta un valor cercano a -2. #- Esto indica que sus mediciones se encuentran relativamente alejadas del valor promedio estimado para Transcend. #Distancia de Cook #Los tres discos superan el criterio exploratorio de 4/40 = 0.10. #Esto indica que podrían tener cierta influencia sobre el ajuste del modelo.Sin embargo, es importante aclarar que superar este umbral no significa que las observaciones sean incorrectas ni que deban eliminarse. #La resina Transcend presenta una variabilidad experimental mayor que los otros materiales: #- Media: 73.59 HV. #- Desviación estándar: 3.30 HV. #- Mínimo: 69.38 HV. #- Máximo: 77.92 HV. #Los tres discos identificados reflejan parte de esa variabilidad. #No se tiene evidencia para afirmar que sean errores de medición.
##Análisis inferencial de la microdureza superficial
#La evaluación de la microdureza superficial se realizó en 40 discos de resina compuesta, distribuidos en cinco grupos de ocho unidades experimentales. Para cada disco se efectuaron cuatro indentaciones en la superficie superior mediante el método Vickers, utilizando el promedio de estas mediciones como valor representativo de cada unidad experimental.
#En cuanto a los resultados descriptivos, Filtek Easy Match presentó el mayor promedio de microdureza superficial (83.38 ± 2.09 HV), seguido de Filtek Z350 XT (81.56 ± 1.53 HV), Transcend (73.59 ± 3.30 HV), Simplishade (64.96 ± 1.24 HV) y Vittra APS Unique (55.94 ± 1.87 HV).
#La evaluación de los supuestos estadísticos evidenció un comportamiento compatible con la normalidad de los residuos, según la prueba de Shapiro-Wilk (W = 0.98; p = 0.80). Asimismo, la prueba de Levene no identificó diferencias estadísticamente significativas entre las varianzas de los grupos (F = 1.41; p = 0.25).
#Una vez verificados los supuestos, se realizó un análisis de varianza de una vía, mediante el cual se identificaron diferencias estadísticamente significativas en la microdureza superficial entre los cinco materiales evaluados (F(4,35) = 235; p < 0.001).
#El tamaño del efecto, estimado mediante eta cuadrado, fue de 0.96 (IC 95%: 0.94–1.00), indicando una magnitud de efecto muy elevada y una importante contribución del tipo de material a la variabilidad observada en la microdureza.
#Las comparaciones múltiples mediante la prueba de Tukey identificaron diferencias estadísticamente significativas en nueve de las diez comparaciones realizadas (p < 0.001). La única comparación que no evidenció diferencias significativas fue la correspondiente a Filtek Easy Match y Filtek Z350 XT (diferencia de medias = 1.816 HV; IC 95%: -1.243 a 4.874; p ajustado = 0.4431).
#Entre los materiales experimentales, Easy Match presentó valores significativamente superiores a Transcend, Simplishade y Vittra APS Unique. Transcend, a su vez, presentó valores significativamente superiores a Simplishade y Vittra APS Unique. Finalmente, Simplishade presentó valores significativamente superiores a Vittra APS Unique.
#En conjunto, los hallazgos evidencian diferencias importantes en la microdureza superficial entre los materiales evaluados. Filtek Easy Match presentó el mayor valor promedio, mientras que Vittra APS Unique presentó el menor. Asimismo, Filtek Easy Match no mostró diferencias estadísticamente significativas respecto al grupo control Filtek Z350 XT, aunque estos resultados no permiten establecer equivalencia entre ambos materiales.
##Crear base de datos para análisis de sensibilidad
# Identificar discos potencialmente influyentes
discos_influyentes <- c(1, 2, 5)
# Base original: incluye los 40 discos
datos_completos <- datos
# Base complementaria: excluye temporalmente
# los tres discos identificados de Transcend
datos_sensibilidad <- datos %>%
filter(
!(grupo == "Transcend" &
disco %in% discos_influyentes)
)
# Verificar tamaños de muestra
table(datos_completos$grupo)
##
## Z350 XT Control Simplishade Easy Match Vittra APS Unique
## 8 8 8 8
## Transcend
## 8
table(datos_sensibilidad$grupo)
##
## Z350 XT Control Simplishade Easy Match Vittra APS Unique
## 8 8 8 8
## Transcend
## 5
##Comparación de los modelos ANOVA
# ANOVA principal
modelo_original <- aov(
microdureza ~ grupo,
data = datos_completos
)
# ANOVA de sensibilidad
modelo_sensibilidad <- aov(
microdureza ~ grupo,
data = datos_sensibilidad
)
# Extraer resultados
anova_original <- summary(
modelo_original
)[[1]]
anova_sensibilidad <- summary(
modelo_sensibilidad
)[[1]]
# Crear tabla comparativa
comparacion_anova <- data.frame(
Modelo = c(
"Modelo original (40 discos)",
"Sensibilidad (37 discos)"
),
F = c(
anova_original$`F value`[1],
anova_sensibilidad$`F value`[1]
),
Valor_p = c(
anova_original$`Pr(>F)`[1],
anova_sensibilidad$`Pr(>F)`[1]
)
)
knitr::kable(
comparacion_anova,
digits = 5,
caption = "Tabla. Análisis de sensibilidad del ANOVA"
)
| Modelo | F | Valor_p |
|---|---|---|
| Modelo original (40 discos) | 234.5 | 0 |
| Sensibilidad (37 discos) | 323.9 | 0 |
##Comparación del tamaño del efecto
# Eta cuadrado del modelo original
eta_original <- effectsize::eta_squared(
modelo_original,
partial = FALSE
)
# Eta cuadrado del modelo de sensibilidad
eta_sensibilidad <- effectsize::eta_squared(
modelo_sensibilidad,
partial = FALSE
)
eta_original
## # Effect Size for ANOVA (Type I)
##
## Parameter | Eta2 | 95% CI
## -------------------------------
## grupo | 0.96 | [0.94, 1.00]
##
## - One-sided CIs: upper bound fixed at [1.00].
eta_sensibilidad
## # Effect Size for ANOVA (Type I)
##
## Parameter | Eta2 | 95% CI
## -------------------------------
## grupo | 0.98 | [0.96, 1.00]
##
## - One-sided CIs: upper bound fixed at [1.00].
##Gráfico específico de la variabilidad de Transcend
# Filtrar Transcend
datos_transcend <- datos %>%
filter(
grupo == "Transcend"
)
# Gráfico individual
ggplot(
datos_transcend,
aes(
x = grupo,
y = microdureza
)
) +
geom_boxplot(
fill = "steelblue",
alpha = 0.5,
width = 0.35
) +
geom_jitter(
width = 0.08,
size = 3
) +
geom_text(
aes(
label = paste("Disco", disco)
),
nudge_x = 0.15,
size = 3
) +
labs(
title = "Variabilidad de microdureza en Transcend",
subtitle = "Valores individuales de los ocho discos",
x = "Material",
y = "Microdureza Vickers (HV)"
) +
theme_classic()
#Los resultados del análisis de sensibilidad son muy importantes y,
desde el punto de vista metodológico, nos permiten llegar a una
conclusión favorable:las diferencias de microdureza entre los cinco
materiales se mantienen e incluso se hacen más marcadas cuando se
excluyen temporalmente las tres observaciones potencialmente influyentes
de Transcend.Esto significa que el resultado principal del estudio no
depende exclusivamente de esos tres discos.
#las diferencias entre los materiales no desaparecen cuando se retiran las observaciones potencialmente influyentes. Por tanto, el hallazgo global es robusto frente a esta evaluación de sensibilidad.No obstante, esto no demuestra que los tres discos deban excluirse ni que el modelo reducido sea preferible.