Paquetes

knitr::opts_chunk$set(echo = TRUE)
library("dplyr")
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library("car")

Datasets

# df ---------
df <- read.csv("edad_dentaria.csv", header = T, sep = ",")
str(df) #uff, hay 3 sexo
## 'data.frame':    462 obs. of  14 variables:
##  $ Marca.temporal            : Factor w/ 461 levels "10/9/2016 16:32:05",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ Su.nombre                 : Factor w/ 2 levels "Carvajal","Curriel": 1 1 1 1 1 1 1 1 1 1 ...
##  $ Radiografía               : Factor w/ 242 levels "h_20100924_3578",..: 1 2 3 4 5 6 7 8 9 10 ...
##  $ Edad.dentaria.según.SM    : num  10 15 7 10 15 5 6 12 15 4 ...
##  $ Sexo                      : Factor w/ 3 levels "Hombre","Hombre ",..: 2 2 2 2 2 2 2 2 2 2 ...
##  $ Categoría.por.diente..3.1.: Factor w/ 6 levels "","D","E","F",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Categoría.por.diente..3.2.: Factor w/ 6 levels "","D","E","F",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Categoría.por.diente..3.3.: Factor w/ 7 levels "","C","D","E",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Categoría.por.diente..3.4.: Factor w/ 9 levels "","A","B","C",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Categoría.por.diente..3.5.: Factor w/ 10 levels "","0","A","B",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Categoría.por.diente..3.6.: Factor w/ 7 levels "","C","D","E",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Categoría.por.diente..3.7.: Factor w/ 10 levels "","0","A","B",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Puntaje.total             : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ EDAD.REAL                 : int  10 17 7 10 18 5 5 12 NA 4 ...
levels(df$Sexo) <- c("Hombre", "Hombre", "Mujer") #colapso el "Hombre " a "Hombre

# elimino los NA
sum(is.na(df$EDAD.REAL)) #hay 39 NA
## [1] 41
df <- df[ which(df$EDAD.REAL !='NA' ),]
sum(is.na(df$EDAD.REAL)) #hay 39 NA
## [1] 0
# ahora df está limpio
str(df)
## 'data.frame':    421 obs. of  14 variables:
##  $ Marca.temporal            : Factor w/ 461 levels "10/9/2016 16:32:05",..: 1 2 3 4 5 6 7 8 10 11 ...
##  $ Su.nombre                 : Factor w/ 2 levels "Carvajal","Curriel": 1 1 1 1 1 1 1 1 1 1 ...
##  $ Radiografía               : Factor w/ 242 levels "h_20100924_3578",..: 1 2 3 4 5 6 7 8 10 11 ...
##  $ Edad.dentaria.según.SM    : num  10 15 7 10 15 5 6 12 4 21 ...
##  $ Sexo                      : Factor w/ 2 levels "Hombre","Mujer": 1 1 1 1 1 1 1 1 1 1 ...
##  $ Categoría.por.diente..3.1.: Factor w/ 6 levels "","D","E","F",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Categoría.por.diente..3.2.: Factor w/ 6 levels "","D","E","F",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Categoría.por.diente..3.3.: Factor w/ 7 levels "","C","D","E",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Categoría.por.diente..3.4.: Factor w/ 9 levels "","A","B","C",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Categoría.por.diente..3.5.: Factor w/ 10 levels "","0","A","B",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Categoría.por.diente..3.6.: Factor w/ 7 levels "","C","D","E",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Categoría.por.diente..3.7.: Factor w/ 10 levels "","0","A","B",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ Puntaje.total             : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ EDAD.REAL                 : int  10 17 7 10 18 5 5 12 4 20 ...

Creo el principal

dmirjian <- df[ which(df$Su.nombre=='Curriel' ),]

Estadística descriptiva

addmargins(table(dmirjian$EDAD.REAL, dmirjian$Sexo))
##      
##       Hombre Mujer Sum
##   3        3     1   4
##   4        5     5  10
##   5        2     3   5
##   6        8     7  15
##   7        7     6  13
##   8        7     8  15
##   9        5     9  14
##   10       4     8  12
##   11       3     9  12
##   12       8     4  12
##   13      10     6  16
##   14       4     8  12
##   15       5     6  11
##   16       4     4   8
##   17       7     5  12
##   18       5     6  11
##   19       5     6  11
##   20       3     4   7
##   21       0     1   1
##   Sum     95   106 201
dmirjian %>% 
  summarise(PromedioReal = mean(EDAD.REAL), SD_Real = sd(EDAD.REAL))
##   PromedioReal SD_Real
## 1     11.64677 4.75916
dmirjian %>% 
  summarise(PromedioD = mean(Edad.dentaria.según.SM), SD = sd(Edad.dentaria.según.SM))
##   PromedioD       SD
## 1  12.10547 3.882734

Diferencia

mean(dmirjian$EDAD.REAL)-mean(dmirjian$Edad.dentaria.según.SM)
## [1] -0.4587065

Estadística inferencial

Para todos

fit <- lm(dmirjian$EDAD.REAL~dmirjian$Edad.dentaria.según.SM)
fit
## 
## Call:
## lm(formula = dmirjian$EDAD.REAL ~ dmirjian$Edad.dentaria.según.SM)
## 
## Coefficients:
##                     (Intercept)  dmirjian$Edad.dentaria.según.SM  
##                          -1.514                            1.087
summary(fit)
## 
## Call:
## lm(formula = dmirjian$EDAD.REAL ~ dmirjian$Edad.dentaria.según.SM)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -9.8810 -1.3565 -0.2059  1.1190  6.6411 
## 
## Coefficients:
##                                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                     -1.51449    0.50996   -2.97  0.00335 ** 
## dmirjian$Edad.dentaria.según.SM  1.08722    0.04012   27.10  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.203 on 199 degrees of freedom
## Multiple R-squared:  0.7868, Adjusted R-squared:  0.7857 
## F-statistic: 734.2 on 1 and 199 DF,  p-value: < 2.2e-16
scatterplot(dmirjian$EDAD.REAL ~ dmirjian$Edad.dentaria.según.SM, 
            main = "Edad cronológica versus edad dentaria Demirjian", 
            xlab = "Edad cronológica", ylab = "Edad dentaria según Demirjian")

Por sexo

Hombres

dmirjian_h <- dmirjian[ which(dmirjian$Sexo=='Hombre' ),] # SM solo hombres

dmirjian_h_fit <- lm(dmirjian_h$EDAD.REAL ~ dmirjian_h$Edad.dentaria.según.SM)
summary(dmirjian_h_fit )
## 
## Call:
## lm(formula = dmirjian_h$EDAD.REAL ~ dmirjian_h$Edad.dentaria.según.SM)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -9.8366 -1.4359 -0.1239  1.1634  5.7619 
## 
## Coefficients:
##                                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                       -1.48666    0.81191  -1.831   0.0703 .  
## dmirjian_h$Edad.dentaria.según.SM  1.08270    0.06431  16.834   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.421 on 93 degrees of freedom
## Multiple R-squared:  0.7529, Adjusted R-squared:  0.7503 
## F-statistic: 283.4 on 1 and 93 DF,  p-value: < 2.2e-16
dmirjian_h_fit 
## 
## Call:
## lm(formula = dmirjian_h$EDAD.REAL ~ dmirjian_h$Edad.dentaria.según.SM)
## 
## Coefficients:
##                       (Intercept)  dmirjian_h$Edad.dentaria.según.SM  
##                            -1.487                              1.083
scatterplot(dmirjian_h$EDAD.REAL ~ dmirjian_h$Edad.dentaria.según.SM, 
            main = "Edad cronológica versus edad dentaria Demirjian - Hombre", 
            xlab = "Edad cronológica", ylab = "Edad dentaria según Demirjian")

Mujeres

dmirjian_m <- dmirjian[ which(dmirjian$Sexo=='Mujer' ),] # Solo mujeres

dmirjian_m_fit <- lm(dmirjian_m$EDAD.REAL ~ dmirjian_m$Edad.dentaria.según.SM)
summary(dmirjian_m_fit )
## 
## Call:
## lm(formula = dmirjian_m$EDAD.REAL ~ dmirjian_m$Edad.dentaria.según.SM)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.9189 -1.2822 -0.3641  1.0811  6.6085 
## 
## Coefficients:
##                                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                       -1.53645    0.64357  -2.387   0.0188 *  
## dmirjian_m$Edad.dentaria.según.SM  1.09096    0.05033  21.675   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.011 on 104 degrees of freedom
## Multiple R-squared:  0.8188, Adjusted R-squared:  0.817 
## F-statistic: 469.8 on 1 and 104 DF,  p-value: < 2.2e-16
dmirjian_m_fit 
## 
## Call:
## lm(formula = dmirjian_m$EDAD.REAL ~ dmirjian_m$Edad.dentaria.según.SM)
## 
## Coefficients:
##                       (Intercept)  dmirjian_m$Edad.dentaria.según.SM  
##                            -1.536                              1.091
scatterplot(dmirjian_m$EDAD.REAL ~ dmirjian_m$Edad.dentaria.según.SM, 
            main = "Edad cronológica versus edad dentaria Demirjian - Mujer", 
            xlab = "Edad cronológica", ylab = "Edad dentaria según Demirjian")

Comparación entre h y m

anova(dmirjian_m_fit, dmirjian_h_fit)
## Warning in anova.lmlist(object, ...): models with response '"dmirjian_h
## $EDAD.REAL"' removed because response differs from model 1
## Analysis of Variance Table
## 
## Response: dmirjian_m$EDAD.REAL
##                                    Df  Sum Sq Mean Sq F value    Pr(>F)
## dmirjian_m$Edad.dentaria.según.SM   1 1900.84 1900.84  469.81 < 2.2e-16
## Residuals                         104  420.78    4.05                  
##                                      
## dmirjian_m$Edad.dentaria.según.SM ***
## Residuals                            
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlación por edad

Igual o menos de 8

dmirjian_3a8 <- dmirjian[ which(dmirjian$EDAD.REAL>=3 & dmirjian$EDAD.REAL<=8 ),]
table(dmirjian_3a8$EDAD.REAL, dmirjian_3a8$Edad.dentaria.según.SM)
##    
##     3 3.2 3.9 4.1 4.2 4.9 5.1 5.4 5.6 5.8 6 6.3 6.5 6.7 6.9 7.1 7.4 7.5
##   3 1   0   0   1   0   0   0   1   0   0 0   0   0   1   0   0   0   0
##   4 0   1   1   0   0   1   1   0   1   1 1   0   1   0   0   0   1   0
##   5 0   0   0   0   0   0   0   0   0   0 1   1   2   0   0   0   0   0
##   6 0   0   0   0   0   0   0   0   0   0 0   0   1   0   1   0   2   0
##   7 0   0   0   0   1   0   0   0   0   0 0   0   0   0   0   1   0   1
##   8 0   0   0   0   0   0   0   0   0   0 0   0   0   0   0   0   1   0
##    
##     7.6 7.7 7.8 7.9 8 8.1 8.2 8.3 8.4 8.6 8.8 8.9 9 9.3 9.7 9.8 9.9 10.3
##   3   0   0   0   0 0   0   0   0   0   0   0   0 0   0   0   0   0    0
##   4   0   0   0   0 0   0   0   0   0   0   0   0 0   0   0   1   0    0
##   5   1   0   0   0 0   0   0   0   0   0   0   0 0   0   0   0   0    0
##   6   2   2   1   1 1   0   0   1   0   1   0   0 0   0   0   0   0    0
##   7   2   1   0   1 1   1   0   0   1   0   0   0 2   0   1   0   0    0
##   8   0   0   1   1 0   1   1   0   0   0   1   1 1   3   1   0   1    1
##    
##     11.1 11.2 16
##   3    0    0  0
##   4    0    0  0
##   5    0    0  0
##   6    1    0  1
##   7    0    0  0
##   8    0    1  0
fit_3a8 <- lm(dmirjian_3a8$EDAD.REAL ~ dmirjian_3a8$Edad.dentaria.según.SM)
summary(fit_3a8)
## 
## Call:
## lm(formula = dmirjian_3a8$EDAD.REAL ~ dmirjian_3a8$Edad.dentaria.según.SM)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.9270 -0.5743 -0.0136  0.9217  2.4795 
## 
## Coefficients:
##                                     Estimate Std. Error t value Pr(>|t|)
## (Intercept)                          2.59617    0.62910   4.127 0.000115
## dmirjian_3a8$Edad.dentaria.según.SM  0.45818    0.07953   5.761 3.07e-07
##                                        
## (Intercept)                         ***
## dmirjian_3a8$Edad.dentaria.según.SM ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.283 on 60 degrees of freedom
## Multiple R-squared:  0.3562, Adjusted R-squared:  0.3454 
## F-statistic: 33.19 on 1 and 60 DF,  p-value: 3.068e-07
fit_3a8
## 
## Call:
## lm(formula = dmirjian_3a8$EDAD.REAL ~ dmirjian_3a8$Edad.dentaria.según.SM)
## 
## Coefficients:
##                         (Intercept)  dmirjian_3a8$Edad.dentaria.según.SM  
##                              2.5962                               0.4582
scatterplot(dmirjian_3a8$EDAD.REAL ~ dmirjian_3a8$Edad.dentaria.según.SM, 
            main = "Edad cronológica versus edad dentaria Demirjian - 3 a 8 años", 
            xlab = "Edad cronológica", ylab = "Edad dentaria según Demirjian")

de 9 a 11

dmirjian_9a11 <- dmirjian[ which(dmirjian$EDAD.REAL>=9 & dmirjian$EDAD.REAL<=11 ),]
table(dmirjian_9a11$EDAD.REAL, dmirjian_9a11$Edad.dentaria.según.SM)
##     
##      6.1 7.5 7.8 8 8.3 8.5 8.7 9.2 9.6 9.8 9.9 10.1 10.4 10.6 10.7 10.8
##   9    0   0   0 0   0   1   2   0   1   2   0    0    2    1    2    0
##   10   1   0   1 1   1   0   0   1   0   1   2    0    0    1    0    1
##   11   0   1   0 0   0   0   0   0   0   0   0    1    0    1    0    0
##     
##      11.1 11.2 11.5 11.7 12 12.3 12.5 13.5 13.6 13.7 14.6 16
##   9     1    0    1    0  0    1    0    0    0    0    0  0
##   10    0    1    0    0  0    1    0    0    0    0    0  0
##   11    0    0    0    1  1    0    1    1    1    2    1  1
fit_dmirjian_9a11 <- lm(dmirjian_9a11$EDAD.REAL ~ dmirjian_9a11$Edad.dentaria.según.SM)
summary(fit_dmirjian_9a11)
## 
## Call:
## lm(formula = dmirjian_9a11$EDAD.REAL ~ dmirjian_9a11$Edad.dentaria.según.SM)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.2246 -0.7856  0.1635  0.5462  1.6017 
## 
## Coefficients:
##                                      Estimate Std. Error t value Pr(>|t|)
## (Intercept)                           8.10704    0.65212  12.432 1.37e-14
## dmirjian_9a11$Edad.dentaria.según.SM  0.17216    0.05989   2.875  0.00675
##                                         
## (Intercept)                          ***
## dmirjian_9a11$Edad.dentaria.según.SM ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7649 on 36 degrees of freedom
## Multiple R-squared:  0.1867, Adjusted R-squared:  0.1641 
## F-statistic: 8.263 on 1 and 36 DF,  p-value: 0.006751
fit_dmirjian_9a11
## 
## Call:
## lm(formula = dmirjian_9a11$EDAD.REAL ~ dmirjian_9a11$Edad.dentaria.según.SM)
## 
## Coefficients:
##                          (Intercept)  
##                               8.1070  
## dmirjian_9a11$Edad.dentaria.según.SM  
##                               0.1722
scatterplot(dmirjian_9a11$EDAD.REAL ~ dmirjian_9a11$Edad.dentaria.según.SM, 
            main = "Edad cronológica versus edad dentaria Demirjian - 9 a 11 años", 
            xlab = "Edad cronológica", ylab = "Edad dentaria según Demirjian")

de 12 a 21

dmirjian_12a21 <- dmirjian[ which(dmirjian$EDAD.REAL>=12 & dmirjian$EDAD.REAL<=21 ),]
table(dmirjian_12a21$EDAD.REAL, dmirjian_12a21$Edad.dentaria.según.SM)
##     
##      9.1 9.2 11.5 12 12.8 13.5 13.6 13.7 14.3 14.6 15.2 15.7 15.8 16
##   12   0   0    3  1    0    1    0    1    1    2    0    1    0  2
##   13   1   1    0  1    1    0    0    0    0    4    0    3    1  4
##   14   0   0    0  0    0    0    0    0    0    2    1    1    0  8
##   15   0   0    0  0    0    0    0    0    0    0    0    0    0 11
##   16   0   0    0  0    0    0    0    0    0    0    0    0    0  8
##   17   0   0    0  0    0    0    0    0    0    0    0    0    0 12
##   18   0   0    0  0    0    0    0    0    0    0    0    1    0 10
##   19   0   0    0  0    0    0    1    0    0    0    0    0    0 10
##   20   0   0    0  0    0    0    0    0    0    0    0    0    0  7
##   21   0   0    0  0    0    0    0    0    0    1    0    0    0  0
fit_dmirjian_12a21 <- lm(dmirjian_12a21$EDAD.REAL ~ dmirjian_12a21$Edad.dentaria.según.SM)
summary(fit_dmirjian_12a21)
## 
## Call:
## lm(formula = dmirjian_12a21$EDAD.REAL ~ dmirjian_12a21$Edad.dentaria.según.SM)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -4.213 -2.041 -0.213  1.787  5.960 
## 
## Coefficients:
##                                       Estimate Std. Error t value Pr(>|t|)
## (Intercept)                             2.8133     2.5682   1.095    0.276
## dmirjian_12a21$Edad.dentaria.según.SM   0.8375     0.1663   5.036 2.14e-06
##                                          
## (Intercept)                              
## dmirjian_12a21$Edad.dentaria.según.SM ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.334 on 99 degrees of freedom
## Multiple R-squared:  0.2039, Adjusted R-squared:  0.1959 
## F-statistic: 25.36 on 1 and 99 DF,  p-value: 2.14e-06
fit_dmirjian_12a21
## 
## Call:
## lm(formula = dmirjian_12a21$EDAD.REAL ~ dmirjian_12a21$Edad.dentaria.según.SM)
## 
## Coefficients:
##                           (Intercept)  
##                                2.8133  
## dmirjian_12a21$Edad.dentaria.según.SM  
##                                0.8375
scatterplot(dmirjian_12a21$EDAD.REAL ~ dmirjian_12a21$Edad.dentaria.según.SM, 
            main = "Edad cronológica versus edad dentaria Demirjian - 12 a 21 años", 
            xlab = "Edad cronológica", ylab = "Edad dentaria según Demirjian")
## Warning in smoother(.x, .y, col = col[2], log.x = logged("x"), log.y =
## logged("y"), : could not fit smooth

t.test(dmirjian$Edad.dentaria.según.SM, dmirjian$EDAD.REAL)
## 
##  Welch Two Sample t-test
## 
## data:  dmirjian$Edad.dentaria.según.SM and dmirjian$EDAD.REAL
## t = 1.0588, df = 384.5, p-value = 0.2904
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.3930887  1.3105016
## sample estimates:
## mean of x mean of y 
##  12.10547  11.64677
boxplot(dmirjian$Edad.dentaria.según.SM, dmirjian$EDAD.REAL, 
        xlab="Método", ylab="Edad", 
        names=c("Edad según D","Edad cronológica"), 
        main= "Comparación entre edad estimada por método (t-test t = 1.0672, df = 436.33, p-value = 0.2864)")