Kapitel 45 Fehlende Daten in Meta-Analysen

Meta-Analysen muss man einfach lieben.

An dieser Seite - wie leider am ganzen Skript - wird noch gearbeitet. Die Seite ist noch nicht korrigiert.


to do:

  • Mehr Studien hinzufügen, so dass ein Funnel Plot Sinn macht
  • Funnel Plot (2 Varianten)
  • Check Formeln
 library(kableExtra)
library(tidyverse)
library(ggpubr)
library(rstatix)
library(broom)

Beim extrahieren von Daten fehlen uns oft Informationen die wir benötigen.

45.1 F-Test wird angegeben, aber kein mean und keine sd

set.seed(666)
group<-sample(c("control", "intervention"), size=100, rep=TRUE)
id<-1:100
data<-data.frame(id, group)

data<-data %>% 
  mutate(pain_t0=rnorm(100, 6,2)) %>% 
  mutate(pain_change=case_when(
    group=="control"~rnorm(length(pain_t0), -1, 3), 
    group=="intervention"~rnorm(length(pain_t0), -4, 3)
  )) %>% 
  mutate(pain_t1 = pain_t0-pain_change)

data
##      id        group    pain_t0  pain_change    pain_t1
## 1     1 intervention  6.3950526  -5.43134776 11.8264003
## 2     2 intervention  8.3634196  -3.15819820 11.5216178
## 3     3 intervention  4.5986907  -4.03638630  8.6350770
## 4     4      control  4.7866300  -0.96335397  5.7499840
## 5     5      control  4.9886163  -6.12365738 11.1122737
## 6     6 intervention  4.3583530  -6.41443414 10.7727871
## 7     7 intervention  5.5277577   1.11066880  4.4170889
## 8     8      control  4.4605928   3.42683037  1.0337624
## 9     9      control  7.4399887   1.15177924  6.2882095
## 10   10 intervention  8.5599010  -3.20142856 11.7613296
## 11   11      control  4.0126403  -1.58847076  5.6011111
## 12   12 intervention  4.1878226   0.58638152  3.6014411
## 13   13      control  3.3635393  -2.48508846  5.8486277
## 14   14      control  9.8689886   5.57526466  4.2937240
## 15   15      control  7.3561252  -4.72140960 12.0775348
## 16   16      control  5.1950483   0.87362918  4.3214191
## 17   17 intervention  6.3710878  -2.86259084  9.2336786
## 18   18      control  6.7996892   3.03583856  3.7638506
## 19   19 intervention  9.2879909  -5.93718900 15.2251799
## 20   20 intervention  5.8757020  -5.36072509 11.2364271
## 21   21      control  5.3671745  -2.04634551  7.4135200
## 22   22 intervention  5.7086700 -11.19716214 16.9058322
## 23   23      control  7.4072144   2.98376100  4.4234534
## 24   24 intervention  6.3833705  -4.15695001 10.5403205
## 25   25 intervention  3.5442404  -9.67843301 13.2226734
## 26   26 intervention  5.8681154  -5.52012854 11.3882440
## 27   27      control  4.4282467  -2.10076483  6.5290115
## 28   28 intervention  0.1136122  -1.85868800  1.9723002
## 29   29      control  4.7446815   3.59617936  1.1485021
## 30   30 intervention  4.8936747  -4.48083525  9.3745100
## 31   31 intervention  8.9792238   0.51363354  8.4655903
## 32   32      control  7.7752764  -8.85767988 16.6329563
## 33   33      control  5.3431993  -5.07994678 10.4231461
## 34   34 intervention  3.4333077  -2.59323857  6.0265463
## 35   35 intervention  5.9712307 -11.61619049 17.5874212
## 36   36 intervention  8.0106759  -4.25651015 12.2671860
## 37   37      control  6.8062257  -1.44691004  8.2531357
## 38   38 intervention  8.8650162  -7.57104337 16.4360595
## 39   39 intervention  6.2746823  -0.96292672  7.2376090
## 40   40      control  3.3169859  -2.53408486  5.8510707
## 41   41 intervention  5.0260322  -5.54235611 10.5683883
## 42   42 intervention  4.2000771  -6.07179470 10.2718718
## 43   43 intervention  6.6409617  -7.87223174 14.5131934
## 44   44 intervention  6.6294598  -8.58295933 15.2124192
## 45   45 intervention  3.9184125  -5.88209891  9.8005114
## 46   46 intervention  6.7708884  -7.82472613 14.5956145
## 47   47 intervention  7.5951095  -4.05271651 11.6478261
## 48   48 intervention  4.8925964  -0.12632656  5.0189229
## 49   49 intervention  6.3546264  -8.96513034 15.3197568
## 50   50 intervention  6.0859701  -5.93815631 12.0241264
## 51   51      control  4.1051854   5.06323396 -0.9580486
## 52   52 intervention  2.3665786  -3.94327211  6.3098507
## 53   53      control  9.9711634  -1.78228265 11.7534460
## 54   54      control  7.6335271   3.01655658  4.6169705
## 55   55 intervention  4.0007172  -9.52966471 13.5303819
## 56   56 intervention  7.1222445  -4.24468905 11.3669335
## 57   57 intervention  4.4398974  -3.08443882  7.5243362
## 58   58 intervention  7.3565100   0.26618243  7.0903276
## 59   59      control  3.8951112   2.70281633  1.1922948
## 60   60      control  4.5916875  -0.35087152  4.9425590
## 61   61      control  4.0987013  -0.13258680  4.2312881
## 62   62 intervention  5.6266686  -8.65604215 14.2827107
## 63   63      control  8.4638880   0.51980629  7.9440817
## 64   64      control  3.2844340  -2.74297534  6.0274093
## 65   65      control  5.3783860  -3.26374343  8.6421294
## 66   66 intervention  8.1444675  -0.79563828  8.9401057
## 67   67 intervention  2.6240986   0.04423637  2.5798622
## 68   68 intervention  5.1014183  -5.59054308 10.6919613
## 69   69 intervention  5.5643629  -8.76760073 14.3319636
## 70   70 intervention  1.8997763  -7.73466991  9.6344462
## 71   71      control  4.4526206  -4.76279245  9.2154130
## 72   72 intervention  8.4670562  -3.49328714 11.9603433
## 73   73      control  7.2758872   2.15247782  5.1234094
## 74   74      control  8.0548518  -5.58949686 13.6443486
## 75   75 intervention  5.5563948   0.91847178  4.6379230
## 76   76      control  8.2845195  -0.80955626  9.0940757
## 77   77 intervention  6.5177998  -1.50133701  8.0191368
## 78   78 intervention  5.0048918  -2.09720471  7.1020965
## 79   79      control  6.7442049  -1.04077621  7.7849811
## 80   80 intervention  3.7130157  -2.04641661  5.7594323
## 81   81 intervention  7.3659224  -1.24174641  8.6076688
## 82   82 intervention  7.5464063   0.90200658  6.6443997
## 83   83      control  4.9495096   1.30919786  3.6403117
## 84   84 intervention  3.7565961  -0.93608559  4.6926817
## 85   85      control  5.0009716   0.36912027  4.6318513
## 86   86      control  6.7019379  -0.55181929  7.2537572
## 87   87 intervention  5.6395536  -0.95504360  6.5945972
## 88   88 intervention -0.2975736 -11.71592490 11.4183513
## 89   89      control  3.2868483  -4.43250343  7.7193517
## 90   90      control  8.0684875  -3.23493145 11.3034190
## 91   91 intervention 11.1578490  -6.12819005 17.2860391
## 92   92 intervention  3.5599447  -6.92113417 10.4810789
## 93   93 intervention  7.1877104   0.15600741  7.0317030
## 94   94      control  8.9600538  -2.82465916 11.7847129
## 95   95 intervention  7.1892963  -1.87977881  9.0690752
## 96   96      control  3.9846259  -0.43150732  4.4161332
## 97   97 intervention  7.3029514  -2.32787839  9.6308298
## 98   98      control  9.0243594   0.95871623  8.0656431
## 99   99 intervention  6.2249683  -5.73042267 11.9553909
## 100 100      control  6.3102053   1.90084114  4.4093641

[https://www.datanovia.com/en/lessons/ancova-in-r/#:~:text=The%20Analysis%20of%20Covariance%20(ANCOVA,two%20or%20more%20independent%20groups.](https://www.datanovia.com/en/lessons/ancova-in-r/#:~:text=The%20Analysis%20of%20Covariance%20(ANCOVA,two%20or%20more%20independent%20groups.)

ggscatter(
  data, x = "pain_t0", y = "pain_t1",
  color = "group", add = "reg.line"
  )+
  stat_regline_equation(
    aes(label =  paste(..eq.label.., ..rr.label.., sep = "~~~~"), color = group)
    )
## Warning: The dot-dot notation (`..eq.label..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(eq.label)` instead.
## ℹ The deprecated feature was likely used in the ggpubr package.
##   Please report the issue at <]8;;https://github.com/kassambara/ggpubr/issueshttps://github.com/kassambara/ggpubr/issues]8;;>.
## `geom_smooth()` using formula = 'y ~ x'

### Homogenität der Regressionssteigungen Mit dieser Annahme wird überprüft, dass es keine signifikante Interaktion zwischen der Kovariate und der Gruppierungsvariable gibt. Dies kann wie folgt bewertet werden:

data %>% anova_test(pain_t1 ~ group*pain_t0)
## ANOVA Table (type II tests)
## 
##          Effect DFn DFd      F        p p<.05   ges
## 1         group   1  96 26.828 1.23e-06     * 0.218
## 2       pain_t0   1  96 24.061 3.80e-06     * 0.200
## 3 group:pain_t0   1  96  0.143 7.06e-01       0.001

Bei uns gibt es eine Interaktion zwischen der Gruppe und der Variable pain_t0.

res.aov <- data %>% anova_test(pain_t1 ~ pain_t0 + group)
get_anova_table(res.aov)
## ANOVA Table (type II tests)
## 
##    Effect DFn DFd      F        p p<.05   ges
## 1 pain_t0   1  97 24.275 3.44e-06     * 0.200
## 2   group   1  97 27.067 1.10e-06     * 0.218
res.aov <- data %>% anova_test(pain_t1 ~ pain_t0*group)
get_anova_table(res.aov)
## ANOVA Table (type II tests)
## 
##          Effect DFn DFd      F        p p<.05   ges
## 1       pain_t0   1  96 24.061 3.80e-06     * 0.200
## 2         group   1  96 26.828 1.23e-06     * 0.218
## 3 pain_t0:group   1  96  0.143 7.06e-01       0.001
data_long<-data %>% 
  dplyr::select(-pain_change) %>% 
  pivot_longer(cols=-c(id, group)
               ) %>% 
  rename(pain=value, 
         time=name, 
         treatment=group)

Wir lieben Meta-Analysen, aber wir lieben es noch mehr, wenn das Kapitel endlich zu Ende ist…Here we are…

demo3.aov <- aov(pain ~ treatment * time + Error(id), data = data_long)
summary(demo3.aov)
## 
## Error: id
##           Df   Sum Sq  Mean Sq
## treatment  1 0.009356 0.009356
## 
## Error: Within
##                 Df Sum Sq Mean Sq F value   Pr(>F)    
## treatment        1  116.0   116.0   12.83 0.000431 ***
## time             1  412.5   412.5   45.64 1.60e-10 ***
## treatment:time   1  154.7   154.7   17.11 5.24e-05 ***
## Residuals      195 1762.7     9.0                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
t.test(data$pain_change~data$group, paired=FALSE, var.equal=TRUE)
## 
##  Two Sample t-test
## 
## data:  data$pain_change by data$group
## t = 5.2687, df = 98, p-value = 8.161e-07
## alternative hypothesis: true difference in means between group control and group intervention is not equal to 0
## 95 percent confidence interval:
##  2.229142 4.923038
## sample estimates:
##      mean in group control mean in group intervention 
##                 -0.7624918                 -4.3385818
17.11 ^0.5
## [1] 4.136424
lm.fit<-lm(pain_change~group, data=data)
summary(lm.fit)
## 
## Call:
## lm(formula = pain_change ~ group, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8.0952 -2.0009  0.1378  2.5258  6.3378 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        -0.7625     0.5214  -1.463    0.147    
## groupintervention  -3.5761     0.6787  -5.269 8.16e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.338 on 98 degrees of freedom
## Multiple R-squared:  0.2207, Adjusted R-squared:  0.2128 
## F-statistic: 27.76 on 1 and 98 DF,  p-value: 8.161e-07
anova(lm.fit)
## Analysis of Variance Table
## 
## Response: pain_change
##           Df  Sum Sq Mean Sq F value    Pr(>F)    
## group      1  309.35 309.352  27.759 8.161e-07 ***
## Residuals 98 1092.13  11.144                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
27.759^0.5
## [1] 5.268681
# Compute the analysis of variance
res.aov <- aov(pain_change ~ group, data = data)
# Summary of the analysis
summary(res.aov)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## group        1  309.4  309.35   27.76 8.16e-07 ***
## Residuals   98 1092.1   11.14                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
lm.fit<-lm(pain_t1~group+pain_t0, data=data)
summary(lm.fit)
## 
## Call:
## lm(formula = pain_t1 ~ group + pain_t0, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.1987 -2.6698 -0.0331  2.1854  8.4448 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         1.9436     1.1077   1.755   0.0825 .  
## groupintervention   3.5289     0.6783   5.203 1.10e-06 ***
## pain_t0             0.8031     0.1630   4.927 3.44e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.331 on 97 degrees of freedom
## Multiple R-squared:  0.3336, Adjusted R-squared:  0.3198 
## F-statistic: 24.27 on 2 and 97 DF,  p-value: 2.835e-09
lm.fit<-lm(pain_t1~group, data=data)
summary(lm.fit)
## 
## Call:
## lm(formula = pain_t1 ~ group, data = data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8.1260 -2.4476 -0.2654  1.8915  9.8709 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         6.7621     0.5786  11.687  < 2e-16 ***
## groupintervention   3.3363     0.7533   4.429 2.47e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.705 on 98 degrees of freedom
## Multiple R-squared:  0.1668, Adjusted R-squared:  0.1583 
## F-statistic: 19.62 on 1 and 98 DF,  p-value: 2.466e-05