Saltar al contenido principal
LibreTexts Español

29.4: Comparación de observaciones pareadas (Sección 28.5)

  • Page ID
    150674
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)

    ( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\id}{\mathrm{id}}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\kernel}{\mathrm{null}\,}\)

    \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\)

    \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\)

    \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    Veamos cómo realizar una prueba t pareada en R. En este caso, generemos algunos datos para un conjunto de individuos en dos pruebas, donde cada indivdual varía en su capacidad general, pero también hay un efecto de práctica tal que el rendimiento en la segunda prueba generalmente es mejor que el primero.

    Primero, veamos qué tan grande de muestra necesitaremos para encontrar un efecto de tamaño medio (d=0.5). Digamos que queremos estar extra seguros en nuestros resultados, así encontraremos el tamaño de la muestra que nos da 95% de potencia para encontrar un efecto si está ahí:

    paired_power <- pwr.t.test(d=0.5, power=0.95, type='paired', alternative='greater')
    paired_power
    ## 
    ##      Paired t test power calculation 
    ## 
    ##               n = 45
    ##               d = 0.5
    ##       sig.level = 0.05
    ##           power = 0.95
    ##     alternative = greater
    ## 
    ## NOTE: n is number of *pairs*

    Ahora vamos a generar un conjunto de datos con el número requerido de sujetos:

    subject_id <- seq(paired_power$n)
    # we code the tests as 0/1 so that we can simply
    # multiply this by the effect to generate the data
    test_id <- c(0,1)
    repeat_effect <- 5
    noise_sd <- 5
    
    subject_means <- rnorm(paired_power$n, mean=100, sd=15)
    paired_data <- crossing(subject_id,test_id) %>%
      mutate(subMean=subject_means[subject_id],
             score=subject_means + 
               test_id*repeat_effect + 
               rnorm(paired_power$n, mean=noise_sd))

    Realicemos una prueba t pareada sobre estos datos. Para hacer eso, necesitamos separar los datos de prueba primero y segundo en variables separadas, lo que podemos hacer convirtiendo nuestro marco de datos largo en un marco de datos amplio.

    paired_data_wide <- paired_data %>%
      spread(test_id, score) %>%
      rename(test1=`0`,
             test2=`1`)
    
    glimpse(paired_data_wide)
    ## Observations: 44
    ## Variables: 4
    ## $ subject_id <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,…
    ## $ subMean    <dbl> 116, 95, 103, 91, 97, 91, 89, 97, 99, …
    ## $ test1      <dbl> 121, 108, 102, 94, 105, 111, 110, 89, …
    ## $ test2      <dbl> 104, 101, 102, 107, 108, 101, 157, 126…

    Ahora podemos pasar esas nuevas variables a la función t.test ():

    paired_ttest_result <- t.test(paired_data_wide$test1,
                                  paired_data_wide$test2,
                                  type='paired')
    paired_ttest_result 
    ## 
    ##  Welch Two Sample t-test
    ## 
    ## data:  paired_data_wide$test1 and paired_data_wide$test2
    ## t = -1, df = 73, p-value = 0.2
    ## alternative hypothesis: true difference in means is not equal to 0
    ## 95 percent confidence interval:
    ##  -10.5   2.3
    ## sample estimates:
    ## mean of x mean of y 
    ##       108       112

    Este análisis es un poco más complicado de realizar utilizando el modelo lineal, ya que necesitamos estimar una intercepción separada para cada sujeto para dar cuenta de las diferencias generales entre sujetos. No podemos hacer esto usando lm () pero podemos hacerlo usando una función llamada lmer () del paquete lme4. Para ello, necesitamos agregar (1|subject_id) a la fórmula, que le dice a lmer () que agregue una intercepción separada (“1”) para cada valor de subject_id.

    paired_test_lmer <- lmer(score ~ test_id + (1|subject_id),
                             data=paired_data)
    summary(paired_test_lmer)
    ## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
    ## lmerModLmerTest]
    ## Formula: score ~ test_id + (1 | subject_id)
    ##    Data: paired_data
    ## 
    ## REML criterion at convergence: 719
    ## 
    ## Scaled residuals: 
    ##     Min      1Q  Median      3Q     Max 
    ## -2.5424 -0.6214 -0.0929  0.7349  2.9793 
    ## 
    ## Random effects:
    ##  Groups     Name        Variance Std.Dev.
    ##  subject_id (Intercept)   0       0.0    
    ##  Residual               228      15.1    
    ## Number of obs: 88, groups:  subject_id, 44
    ## 
    ## Fixed effects:
    ##             Estimate Std. Error     df t value Pr(>|t|)    
    ## (Intercept)   107.59       2.28  86.00   47.26   <2e-16 ***
    ## test_id         4.12       3.22  86.00    1.28      0.2    
    ## ---
    ## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
    ## 
    ## Correlation of Fixed Effects:
    ##         (Intr)
    ## test_id -0.707
    ## convergence code: 0
    ## boundary (singular) fit: see ?isSingular

    Esto da una respuesta similar a la prueba t estándar pareada. La ventaja es que es más flexible, lo que nos permite realizar análisis de medidas repetidas, como veremos a continuación.


    This page titled 29.4: Comparación de observaciones pareadas (Sección 28.5) is shared under a not declared license and was authored, remixed, and/or curated by Russell A. Poldrack via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.