Kapitel 30 Risikofaktoren, prognostische Faktoren und Effekt-modifizerende Faktoren

Dies ist eine unvollständige und unkorrigierte Version 2022-12-24.

Wir lernen hier folgende Begriffe einzuordnen:

  • Risikofaktor (Faktor, der kausal mit einem Ereignis oder einer Krankheit assoziert ist, d.h. der zum Auftreten des Ereignis oder der Krankheit führen kann) - wobei nicht alle Experten beim Risikofaktor die Kausalität voraussetzen.
  • Prädiktor - ein Faktor, der nicht kausal mit einem Ereignis oder einer Krankheit assoziert ist
  • Prognostischer Faktor - ein Faktor, der das Ergebnis einer Krankheit beeinflusst.
  • Effektmodifikator - ein Faktor, der die Wirkung einer Therapie beeinflusst.

Es gibt Faktoren, die einen Einfluss auf die Prognose haben, jedoch nicht unbedingt die Wirkung einer Therapie beeinflussen. Wir nennen diese Faktoren entweder Risikofaktoren (z.B. Stürze in der Vergangenheit sind ein Risikofaktor für Stürze in der Zukunft) oder prognostische Faktoren. Beispiel: Die Selbstwirksamkeitserwartung ist ein prognostischer Faktor für Patient:innen mit Schmerzen.). Ein Risikofaktor ist ein kausaler Faktor für das Eintreten eines Ereignisses (wie im Beispiel hier der Sturz) oder einer Krankheit. Ist ein Faktor nicht kausal mit der Wahrscheinlichkeit des Auftretens eines Ereignisses assoziert, so wird oft von einem Prädiktor gesprochen.

In unserem Beispiel ist der Faktor Stürze in der Vergangenheit eine Mischung aus kausalem Risikofaktor und nicht-kausalem Prädiktor. Stürze in der Vergangenheit erhöhen die Angst vor Stürzen und führen zu einer verminderten körperlichen Aktivität, was wiederum durch den Verlust von Kraft und Gleichgewicht zu einer höheren Wahrscheinlichkeit von Stürzen in der Zukunft führt (kausaler Risikofaktor), anderseits kann der Sturz in der Vergangenheit auch nur das Symptom verminderter Kraft und Gleichgewicht sein und nicht selber kausal zu mehr Stürzen führen (nicht-kausaler Prädiktor).

Der Begriff prognostischer Faktor wird oft benutzt, wenn schon eine Krankheit besteht und es um die Prognose dieser Krankheit geht

Ein Effekt-Modifikator ist ein Faktor, der die Wirksamkeit, d.h. den Effekt, einer Therapie oder eines Risikofaktors beeinflusst.

Zum Beispiel könnte eine Trainingstherapie zur Sturzprävention bei älteren Menschen ohne Stürze in der Vergangenheit weniger wirken als bei älteren Menschen mit Stürzen in der Vergangenheit.

Das bedeutet, dass ein Faktor ein Risikofkator und ein Effektmodifikator sein kann. Dies muss jedoch nicht immer der Fall sein. Zum Beispiel ist die Angst vor dem Stürzen, zum Beispiel gemessen mit dem FES-I, ein Risikofaktor oder zumindest ein prognostischer Faktor für Stürze. FES-I ist jedoch - zumindest im nächsten Beispiel - kein Effektmodifikator.

30.1 Risikofaktor

Schauen wir uns das an einem Beispiel an

Wir sehen, dass höhere Punkte im FES-I (d.h. mehr Angst vor dem Stürzen) die Odds (Odds = Chancen) für einen Sturz erhöhen. Für einen Punkt mehr im FES-I, steigen die Odds zu stürzen um den Faktor 1.03 (d.h. die Odds Ratio pro Punkt mehr im FES-I ist 1.03).

explanatory = c("FES_I", "Treatment")
dependent = 'Faller'
data_script %>%
  summary_factorlist(dependent, explanatory, 
  p=TRUE, add_dependent_label=TRUE) -> t1
knitr::kable(t1, align=c("l", "l", "r", "r", "r")) %>% 
   scroll_box(width = "100%")
Dependent: Faller 0 1 p
Total FSE-I Mean (SD) 26.6 (7.6) 29.0 (9.6) 0.009
Treatment 1 40 (20.4) 33 (18.5) 0.797
2 83 (42.3) 73 (41.0)
3 73 (37.2) 72 (40.4)
data_script %>%
  or_plot(dependent, explanatory)
Pro Punkt mehr im FES-I steigen die Odds um den Faktor 1.03.

Abbildung 2.8: Pro Punkt mehr im FES-I steigen die Odds um den Faktor 1.03.

Um den Einfluss des FES-I auf die Intervention zu untersuchen, müssen wir eine Interaktion in das Modell einbauen. Eine Interaktion bedeutet, dass der Einfluss der Therapie nicht bei allen FES-I Punkten gleich bleibt. Man kann auch sagen, dass FES-I und Behandlung auf der logarithmierten Skala (Log Odds) einen multiplikativen Effekt habe und nicht nur einen additiven. Die Interaktion wird auch Wechselwirkung genannt. Sie finden hier einen Text (Link) zur Interpretation von Interaktion in logistischen Regressionen.

FES-I hat jedoch keinen Einfluss auf den Effekt der Behandlung, das heisst, ob wir den Faktor FES-I im Modell berücksichtigen oder nicht, ändert den Effekt des FES-I nicht.

Wir sehen hier unten, dass die Interaktionen (FES_I:Treatment2 und FES_I:Treatment3) nicht signifikant sind.

lr<-glm(Faller~FES_I*Treatment+Age+Women, data=data_script, family=binomial)
jtools::summ(lr, exp=TRUE, confint=TRUE)
Observations 374
Dependent variable Faller
Type Generalized linear model
Family binomial
Link logit
χ²(7) 9.20
Pseudo-R² (Cragg-Uhler) 0.03
Pseudo-R² (McFadden) 0.02
AIC 524.41
BIC 555.80
exp(Est.) 2.5% 97.5% z val. p
(Intercept) 0.94 0.05 19.27 -0.04 0.97
FES_I 1.02 0.97 1.07 0.62 0.54
Treatment2 0.72 0.11 4.55 -0.35 0.72
Treatment3 0.50 0.08 3.24 -0.73 0.47
Age 0.99 0.96 1.02 -0.53 0.59
Women 1.16 0.72 1.87 0.60 0.55
FES_I:Treatment2 1.01 0.95 1.08 0.46 0.64
FES_I:Treatment3 1.03 0.97 1.10 0.99 0.32
Standard errors: MLE
Wir können diese auch noch etwas anders darstellen - was zwar methodologisch nicht so sinnvoll ist, aber zur Visualisierung des Beispiels hilft: Wir können den FES-I dichotomosieren. Dichotomisieren macht eigentlich von einem methodologischen Standpunkt selten Sinn siehe diesen Text dazu. Aber zur Visualisierung tun wir es hier trotzdem.

FES-I Scores zwischen 16 und 19 deuten auf eine geringe Besorgnis vor Stürzen, Scores zwischen 20 und 27 dueten auf eine moderate Besorgnis vor Stürzen und Scores zwischen 28 und 64 (64 = maximum) deuten auf eine grosse Besorgnis vor Stürzen hin. Wir können zum Beispiel bei 28 Punkten dichotomisieren, d.h. Scores bis und mit 27 als 0 bezeichnen und ab 28 als 1.

data_script<-data_script %>% 
  mutate(FES_I_0_1 = case_when(
    FES_I<=27~0, 
    FES_I>=28~1)) %>% 
  mutate(FES_I_0_1=factor(FES_I_0_1, levels=c(0,1), labels=c("Low/Moderate Concerns", "High Concerns")))

tapply(data_script$FES_I, data_script$FES_I_0_1,
  function(x) format(summary(x), scientific = FALSE))
$`Low/Moderate Concerns`
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
"16.00" "20.00" "22.00" "22.09" "24.00" "27.00" 

$`High Concerns`
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
"28.00" "30.00" "34.00" "35.99" "40.00" "59.00" 
summarytools::ctable(data_script$FES_I_0_1, data_script$Faller, OR=TRUE)
Cross-Tabulation, Row Proportions  
FES_I_0_1 * Faller  
Data Frame: data_script  


----------------------- -------- ------------- ------------- --------------
                          Faller             0             1          Total
              FES_I_0_1                                                    
  Low/Moderate Concerns            124 (55.9%)    98 (44.1%)   222 (100.0%)
          High Concerns             72 (47.4%)    80 (52.6%)   152 (100.0%)
                  Total            196 (52.4%)   178 (47.6%)   374 (100.0%)
----------------------- -------- ------------- ------------- --------------

----------------------------------
 Odds Ratio   Lo - 95%   Hi - 95% 
------------ ---------- ----------
    1.41        0.93       2.13   
----------------------------------

Wir können nun die Effekte der Therapie in beiden Gruppen (“Wenig oder moderate Besorgnis vor Stürzen” und “Grosse Besorgnis vor Stürzen”) separat ausführen. Wir erstellen dazu zwei Subgruppen:

  • Personen mit niedriger oder moderater Besorgnis vor einem Sturz
  • Personen mit hoher Besorgnis vor einem Sturz.

Hier sehen wir die Stichprobe mit niedriger oder moderater Besorgnis vor einem Sturz:

low_moderate_concerns<-data_script %>% 
  filter(FES_I_0_1=="Low/Moderate Concerns")
summarytools::freq(low_moderate_concerns$FES_I_0_1)
Frequencies  
low_moderate_concerns$FES_I_0_1  
Type: Factor  

                              Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
--------------------------- ------ --------- -------------- --------- --------------
      Low/Moderate Concerns    222    100.00         100.00    100.00         100.00
              High Concerns      0      0.00         100.00      0.00         100.00
                       <NA>      0                               0.00         100.00
                      Total    222    100.00         100.00    100.00         100.00

Hier sehen wir die Stichprobe mit hoher Besorgnis vor einem Sturz:

high_concerns<-data_script %>% 
  filter(FES_I_0_1=="High Concerns")
summarytools::freq(high_concerns$FES_I_0_1)
Frequencies  
high_concerns$FES_I_0_1  
Type: Factor  

                              Freq   % Valid   % Valid Cum.   % Total   % Total Cum.
--------------------------- ------ --------- -------------- --------- --------------
      Low/Moderate Concerns      0      0.00           0.00      0.00           0.00
              High Concerns    152    100.00         100.00    100.00         100.00
                       <NA>      0                               0.00         100.00
                      Total    152    100.00         100.00    100.00         100.00

Hier nun die Regressionen in den beiden Subgruppen: In der Subgruppe mit niederiger oder moderater Besorgnis sehen wir, dass die Odds Ratio für die Behandlungen 2 und 3 im Vergleich zu Behandlung 1 unter 1 ist, jedoch mit sehr weiten Konfidenzintervallen - Wir können also nicht ausschliessen, dass die Behandlung keinen besseren Effekt als die Behandlung 1 hat.

lr<-glm(Faller~Treatment, data=low_moderate_concerns, family=binomial)
jtools::summ(lr, exp=TRUE, confint=TRUE)
Observations 222
Dependent variable Faller
Type Generalized linear model
Family binomial
Link logit
χ²(2) 0.03
Pseudo-R² (Cragg-Uhler) 0.00
Pseudo-R² (McFadden) 0.00
AIC 310.67
BIC 320.88
exp(Est.) 2.5% 97.5% z val. p
(Intercept) 0.82 0.44 1.53 -0.63 0.53
Treatment2 0.94 0.45 1.98 -0.16 0.87
Treatment3 0.98 0.46 2.07 -0.06 0.95
Standard errors: MLE

In der Subgruppe mit hoher Besorgnis vor einem Sturz sehen wir, dass die Odds Ratios für die Behandlungen 1 und 2 über 1 sind, jedoch auch wieder mit sehr weiten Konfidenzintervallen. Wir können also hier nicht ausschliessen, dass die Behandlungen nicht schlechter sind als die Behandlung 1. (Odds Ratios über 1 deuten auf mehr Stürze mit dieser Behandlung hin, aber eben, der Effekt ist statistisch nicht signifikant.)

lr<-glm(Faller~Treatment, data=high_concerns, family=binomial)
jtools::summ(lr, exp=TRUE, confint=TRUE)
Observations 152
Dependent variable Faller
Type Generalized linear model
Family binomial
Link logit
χ²(2) 1.39
Pseudo-R² (Cragg-Uhler) 0.01
Pseudo-R² (McFadden) 0.01
AIC 214.90
BIC 223.97
exp(Est.) 2.5% 97.5% z val. p
(Intercept) 0.83 0.42 1.65 -0.52 0.60
Treatment2 1.28 0.55 2.97 0.57 0.57
Treatment3 1.67 0.70 3.98 1.15 0.25
Standard errors: MLE

Wenn wir den FES-I im univariablen Modell anschauen, sehen wir, dass der FES-I ein Risikofaktor für Stürze ist (obschon im dichotomisierten Modell dies nicht mehr statistisch signifikant ist - Ein Grund mehr, nicht zu dichotomisieren. In der nicht-dichotomisierten Variante war ja der FES-I statistisch signifikant mit den Stürzen assoziert).

lr<-glm(Faller~FES_I_0_1, data=data_script, family=binomial)
jtools::summ(lr, exp=TRUE, confint=TRUE)
Observations 374
Dependent variable Faller
Type Generalized linear model
Family binomial
Link logit
χ²(1) 2.61
Pseudo-R² (Cragg-Uhler) 0.01
Pseudo-R² (McFadden) 0.01
AIC 519.00
BIC 526.85
exp(Est.) 2.5% 97.5% z val. p
(Intercept) 0.79 0.61 1.03 -1.74 0.08
FES_I_0_1High Concerns 1.41 0.93 2.13 1.61 0.11
Standard errors: MLE

Um zu untersuchen, ob die wirkung in beiden Subgruppen unterschiedlich ist, müssen wir jedoch nicht unbedingt die Analysen in beiden Subgruppen separat durchführen. Wir könne auch die gesamte Stichprobe analysieren und einen Interaktions-Term in das Modell einführen: Die Interaktion ist statistisch nicht statistisch signifikant. Wir sehen dies an den P-Werten bei den beiden Interaktions-Termen FES_I_0_1HighConcerns:Treatment2 (der Doppelpunkt deutet die Interaktion an) und FES_I_0_1HighConcerns:Treatment3.

lr<-glm(Faller~FES_I_0_1*Treatment, data=data_script, family=binomial)
jtools::summ(lr, exp=TRUE, confint=TRUE)
Observations 374
Dependent variable Faller
Type Generalized linear model
Family binomial
Link logit
χ²(5) 4.03
Pseudo-R² (Cragg-Uhler) 0.01
Pseudo-R² (McFadden) 0.01
AIC 525.58
BIC 549.12
exp(Est.) 2.5% 97.5% z val. p
(Intercept) 0.82 0.44 1.53 -0.63 0.53
FES_I_0_1High Concerns 1.02 0.40 2.57 0.04 0.97
Treatment2 0.94 0.45 1.98 -0.16 0.87
Treatment3 0.98 0.46 2.07 -0.06 0.95
FES_I_0_1High Concerns:Treatment2 1.36 0.44 4.19 0.53 0.59
FES_I_0_1High Concerns:Treatment3 1.71 0.54 5.38 0.91 0.36
Standard errors: MLE

Der FES-I verändert jedoch den Effekt der Therapie nicht.

Eine Frage die hier aufkommen könnte: Was ist der Unterschied zwischen einem Effekt-Modifikator und einem Confounder?

Ein Confounder wäre in unserem Beispiel ein Faktor der mit der Behandlung und mit dem den Stürzen assoziert ist. Also zum Beispiel, wenn die Personen mit grosser Besorgnis vor einem Sturz eher die Behandlung 1 wählen würden. Dies ist in unserem Beispiel nicht der Fall, da die Behandlungsgruppen randomisiert wurden. Für einen Confoundenr können wir korrigieren, wenn wir diesen Confounder mit ins Modell nehmen. Für den Effektmodifikator genügt es nicht, diesen einfach mit in das Modell zu nehmen, wir müssen zusätzlich einen Interaktions-Term zwischen diesem potentiellen Effektmodifikator und der Behandlung einfügen. Für eine ausführliche Abhandlung darüber auf Deutsch, siehe hier

Wir können uns das auch noch in Stata anschauen, hier mit der kontinuierlichen Version des FES-I - was ja methodologisch viel mehr Sinn macht als die dichotomisierte Variante:

use data_script.dta

logistic Faller i.Treatment 

logistic Faller FES_I

logistic Faller i.Treatment##c.FES_I
Logistic regression                                     Number of obs =    374
                                                        LR chi2(2)    =   0.45
                                                        Prob > chi2   = 0.7969
Log likelihood = -258.57673                             Pseudo R2     = 0.0009

------------------------------------------------------------------------------
      Faller | Odds ratio   Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
   Treatment |
          2  |   1.066083   .3035058     0.22   0.822      .610183    1.862608
          3  |   1.195517   .3441979     0.62   0.535     .6799683    2.101952
             |
       _cons |       .825   .1940119    -0.82   0.413     .5203317     1.30806
------------------------------------------------------------------------------
Note: _cons estimates baseline odds.


Logistic regression                                     Number of obs =    374
                                                        LR chi2(1)    =   6.91
                                                        Prob > chi2   = 0.0086
Log likelihood = -255.34849                             Pseudo R2     = 0.0134

------------------------------------------------------------------------------
      Faller | Odds ratio   Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
       FES_I |   1.032378   .0127227     2.59   0.010      1.00774    1.057617
       _cons |   .3753626   .1338228    -2.75   0.006      .186631    .7549499
------------------------------------------------------------------------------
Note: _cons estimates baseline odds.


Logistic regression                                     Number of obs =    374
                                                        LR chi2(5)    =   8.40
                                                        Prob > chi2   = 0.1355
Log likelihood = -254.6032                              Pseudo R2     = 0.0162

------------------------------------------------------------------------------
      Faller | Odds ratio   Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
   Treatment |
          2  |   .6969435   .6446788    -0.39   0.696     .1137178    4.271363
          3  |   .5177619   .4921735    -0.69   0.489     .0803518    3.336293
             |
       FES_I |   1.015097   .0249813     0.61   0.543     .9672969     1.06526
             |
   Treatment#|
     c.FES_I |
          2  |   1.015752   .0318233     0.50   0.618     .9552555    1.080079
          3  |   1.031516   .0335298     0.95   0.340     .9678481    1.099371
             |
       _cons |   .5399348   .3972018    -0.84   0.402       .12769    2.283105
------------------------------------------------------------------------------
Note: _cons estimates baseline odds.

30.2 Effekt-Modifikator

Schauen wir uns ein Beispiel mit der Variable Stürze in der Vergangenheit an. In diesem Beispiel haben wir zwei Übungstherapien zur Sturzprävention. Wir haben eine Variable, die erfasst, ob jemand in den zwölf Monaten vor dem Beginn der Therapie gestürzt ist (Fallen_past12months). Diese Variable ist in unserem Beispiel einerseits ein prognostischer Faktor, weil Personen mit einem Sturz in der Vergangenheit auch in der Zukunft ein höheres Risiko haben zu stürzen als diejenigen, die in den letzten zwölf Monaten nicht gestürzt sind. Anderseits beeinflusst diese Variable auch die Wirkung der Therapien.

https://cran.r-project.org/web/packages/margins/vignettes/TechnicalDetails.pdf

  • Beispiel eines prognostischen Faktors, der auch einen Einfluss auf die Wirkung der Therapie hat (Effekt Modifikator)

Wir sehen, dass die Sturzgeschichte einen signifikanten Einfluss auf die Sturzhäufigkeit im 12-Monate Follow-up hat.

lr_1<-glm(Faller~Fallen_past12months_yes_no, data=data_script, family = "binomial")
jtools::summ(lr_1, exp=TRUE, confint=TRUE)
Observations 229
Dependent variable Faller
Type Generalized linear model
Family binomial
Link logit
χ²(1) 4.09
Pseudo-R² (Cragg-Uhler) 0.02
Pseudo-R² (McFadden) 0.01
AIC 316.11
BIC 322.98
exp(Est.) 2.5% 97.5% z val. p
(Intercept) 0.60 0.39 0.94 -2.25 0.02
Fallen_past12months_yes_noFall History 1.75 1.01 3.03 2.01 0.04
Standard errors: MLE

Jetzt erstellen wir zwei neue Subgruppen:

  • Personen mit Stürze in den letzten 12 Monaten vor dem Start der Behandlung
  • Personen ohne Stürze in den letzten 12 Monaten vor dem Start der Behandlung

Hier sehen wir die Stürze im Follow-Up aufgesplittet nach den beiden Behandlungen in den Personen mit einem Sturz in den letzten 12 Monaten vor der Behandlung:

fallHistory<-data_script %>% 
  filter(Fallen_past12months_yes_no=="Fall History")
summarytools::ctable(fallHistory$Treatment, fallHistory$Faller)
Cross-Tabulation, Row Proportions  
Treatment * Faller  
Data Frame: fallHistory  

----------- -------- ------------ ------------ --------------
              Faller            0            1          Total
  Treatment                                                  
          1            19 (42.2%)   26 (57.8%)    45 (100.0%)
          2            51 (51.5%)   48 (48.5%)    99 (100.0%)
      Total            70 (48.6%)   74 (51.4%)   144 (100.0%)
----------- -------- ------------ ------------ --------------

Hier sehen wir die Stürze im Follow-Up aufgesplittet nach den beiden Behandlungen in den Personen ohne einen Sturz in den letzten 12 Monaten vor der Behandlung:

fallHistory_no<-data_script %>% 
  filter(Fallen_past12months_yes_no=="No Fall History")

summarytools::ctable(fallHistory_no$Treatment, fallHistory_no$Faller)
Cross-Tabulation, Row Proportions  
Treatment * Faller  
Data Frame: fallHistory_no  

----------- -------- ------------ ------------ -------------
              Faller            0            1         Total
  Treatment                                                 
          1            21 (75.0%)    7 (25.0%)   28 (100.0%)
          2            32 (56.1%)   25 (43.9%)   57 (100.0%)
      Total            53 (62.4%)   32 (37.6%)   85 (100.0%)
----------- -------- ------------ ------------ -------------

Hier die gleiche Tabelle noch in allen Personen:

summarytools::ctable(data_script$Treatment, data_script$Faller)
Cross-Tabulation, Row Proportions  
Treatment * Faller  
Data Frame: data_script  

----------- -------- ------------- ------------- --------------
              Faller             0             1          Total
  Treatment                                                    
          1             40 (54.8%)    33 (45.2%)    73 (100.0%)
          2             83 (53.2%)    73 (46.8%)   156 (100.0%)
      Total            123 (53.7%)   106 (46.3%)   229 (100.0%)
----------- -------- ------------- ------------- --------------

Hier sehen wir die Analyse im gesamten Sample. Die Behandlung hat keinen signifikanten Einfluss auf die Sturzhäufigkeit.

lr_1<-glm(Faller~Treatment, data=data_script, family = "binomial")
jtools::summ(lr_1, exp=TRUE, confint=TRUE)
Observations 229
Dependent variable Faller
Type Generalized linear model
Family binomial
Link logit
χ²(1) 0.05
Pseudo-R² (Cragg-Uhler) 0.00
Pseudo-R² (McFadden) 0.00
AIC 320.15
BIC 327.02
exp(Est.) 2.5% 97.5% z val. p
(Intercept) 0.83 0.52 1.31 -0.82 0.41
Treatment2 1.07 0.61 1.86 0.22 0.82
Standard errors: MLE

Nun untersuchen wir die Wirkung der Behandlung nur in den Personen mit einem Sturz in den letzten 12 Monaten vor dem Start der Behandlung. Der Effekt der Behandlung ist zwar statistisch nicht signifikant, wir sehen jedoch, dass der Effekt ganz anders ist als in der nächsten Analyse bei den Personen ohne Sturz in der Geschichte.

lr_1<-glm(Faller~Treatment, data=fallHistory, family = "binomial")
jtools::summ(lr_1, exp=TRUE, confint=TRUE)
Observations 144
Dependent variable Faller
Type Generalized linear model
Family binomial
Link logit
χ²(1) 1.07
Pseudo-R² (Cragg-Uhler) 0.01
Pseudo-R² (McFadden) 0.01
AIC 202.44
BIC 208.38
exp(Est.) 2.5% 97.5% z val. p
(Intercept) 1.37 0.76 2.47 1.04 0.30
Treatment2 0.69 0.34 1.40 -1.03 0.30
Standard errors: MLE

Jetzt die Analyse nur mit den Personen, die 12 Monate vor dem Start der Behandlung nicht gestürzt sind. Der Effekt der Behandlung ist zwar auch nicht statistisch signifikant, aber er geht in die andere Richtung als bei den Personen mit Sturzgeschichte. Wir müssen jedoch berücksichtigen, dass die Stichprobengrösse nicht für eine Interaktions oder Subgruppenanalyse geplant war (d.h. die Power wird hier nicht genügend gross sein). Das ist meistens ein Problem bei Subgruppen-Analysen, meistens ist die Stichprobengrösse nicht für die Subgruppenanalysen angepasst, d.h. man müsste viel grössere Stichproben nehmen, um Subgruppen analysieren zu können.

lr_1<-glm(Faller~Treatment, data=fallHistory_no, family = "binomial")
jtools::summ(lr_1, exp=TRUE, confint=TRUE)
Observations 85
Dependent variable Faller
Type Generalized linear model
Family binomial
Link logit
χ²(1) 2.94
Pseudo-R² (Cragg-Uhler) 0.05
Pseudo-R² (McFadden) 0.03
AIC 113.65
BIC 118.53
exp(Est.) 2.5% 97.5% z val. p
(Intercept) 0.33 0.14 0.78 -2.52 0.01
Treatment2 2.34 0.86 6.39 1.66 0.10
Standard errors: MLE

Wir müssen jedoch die Analysen nicht separat für beide Subgruppen durchführen, wir können die gesamte Stichprobe analysieren und einen Interaktions-Term in das Modell nehmen (was jedoch das Problem der zu geringen Stichprobengrösse nicht immer löst - Interaktionsanalysen benötigen viel grössere Stichprobengrössen- siehe dazu diese Diskussion).

Hier die Analyse mit dem vollen Adjustment und dem Interaktions-Term. Hier sehen wir, dass die Interaktion zwischen Stürzen in den zwölf Monaten vor der Therapie und der Therapie statistisch signifikant ist.

lr_1_interaktion<-glm(Faller~Treatment*Fallen_past12months_yes_no+Age+Women
, data=data_script, family = "binomial")
jtools::summ(lr_1_interaktion, exp=TRUE, confint=TRUE)
Observations 229
Dependent variable Faller
Type Generalized linear model
Family binomial
Link logit
χ²(5) 9.24
Pseudo-R² (Cragg-Uhler) 0.05
Pseudo-R² (McFadden) 0.03
AIC 318.96
BIC 339.56
exp(Est.) 2.5% 97.5% z val. p
(Intercept) 0.47 0.02 11.86 -0.46 0.65
Treatment2 2.43 0.89 6.65 1.72 0.08
Fallen_past12months_yes_noFall History 4.18 1.47 11.85 2.69 0.01
Age 0.99 0.96 1.03 -0.37 0.71
Women 1.33 0.72 2.43 0.92 0.36
Treatment2:Fallen_past12months_yes_noFall History 0.28 0.08 0.97 -2.01 0.04
Standard errors: MLE

Hier das Modell ohne Interaktion.

lr_1_ohneInteraktion<-glm(Faller~Treatment+Fallen_past12months_yes_no+Age+Women, data=data_script, family = "binomial")
jtools::summ(lr_1, exp=TRUE, confint=TRUE)
Observations 85
Dependent variable Faller
Type Generalized linear model
Family binomial
Link logit
χ²(1) 2.94
Pseudo-R² (Cragg-Uhler) 0.05
Pseudo-R² (McFadden) 0.03
AIC 113.65
BIC 118.53
exp(Est.) 2.5% 97.5% z val. p
(Intercept) 0.33 0.14 0.78 -2.52 0.01
Treatment2 2.34 0.86 6.39 1.66 0.10
Standard errors: MLE

Wir können die beiden Modelle noch statistisch vergleichen. In diesem Vergleich sehen wir, dass das Modell mit der Interaktion statistisch signifikant besser ist.

Hier ein Tutorial für Modell-Vergleiche

anova(lr_1_interaktion,lr_1_ohneInteraktion,test='LR')
Analysis of Deviance Table

Model 1: Faller ~ Treatment * Fallen_past12months_yes_no + Age + Women
Model 2: Faller ~ Treatment + Fallen_past12months_yes_no + Age + Women
  Resid. Df Resid. Dev Df Deviance Pr(>Chi)  
1       223     306.96                       
2       224     311.16 -1  -4.1951  0.04054 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

30.2.1 Graphische Darstellung Interaktion Sturzgeschichte

Und hier das Modell mit Interaktion, um den Einfluss der Stürze in der Geschichte auf die Behandlung zu untersuchen:

lr_interact<-glm(Faller~Treatment*Fallen_past12months_yes_no+Age+Women, data=data_script, family = "binomial")
jtools::summ(lr_interact, exp=TRUE, confint=TRUE)
Observations 229
Dependent variable Faller
Type Generalized linear model
Family binomial
Link logit
χ²(5) 9.24
Pseudo-R² (Cragg-Uhler) 0.05
Pseudo-R² (McFadden) 0.03
AIC 318.96
BIC 339.56
exp(Est.) 2.5% 97.5% z val. p
(Intercept) 0.47 0.02 11.86 -0.46 0.65
Treatment2 2.43 0.89 6.65 1.72 0.08
Fallen_past12months_yes_noFall History 4.18 1.47 11.85 2.69 0.01
Age 0.99 0.96 1.03 -0.37 0.71
Women 1.33 0.72 2.43 0.92 0.36
Treatment2:Fallen_past12months_yes_noFall History 0.28 0.08 0.97 -2.01 0.04
Standard errors: MLE
new.data<- data_script %>% 
  modelr::add_predictions(lr_interact, type="response")
  
library(ggplot2)
pd <- position_dodge(width=0.2)
ggplot(new.data, aes(x=Fallen_past12months_yes_no, y=pred, colour=Treatment))+
  #geom_boxplot()+
  stat_summary(fun.data=mean_cl_normal,geom="errorbar",size=0.8,width=0.05,position=pd) +
  stat_summary(fun=mean,geom="point",position=pd, size=3)+
  theme_classic()+
  ylab("Probability of a Fall")+
  scale_colour_manual(values=c("#7D42DB", "#DB8823", "black"))+
  ylim(0,1)
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.
Wir sehen dass die Personen mit Stürzen in der Vergangenheit auch im 12-Monate Follow-up häufiger stürzen. Die Wirkung der Behandlung ist in den Personen ohne Sturz in der Geschichte anders, als bei den Personen mit Sturzgeschichte. Bei den Personen ohne Stürze in der Verganheneit hat die Gruppe mit Behandlung 1 am wenigsten Stürze. Bei den Personen mit Stürzen in der Vergangenheit, stürzen die Personen mit der Behandlug 1 am meisten.

Abbildung 11.5: Wir sehen dass die Personen mit Stürzen in der Vergangenheit auch im 12-Monate Follow-up häufiger stürzen. Die Wirkung der Behandlung ist in den Personen ohne Sturz in der Geschichte anders, als bei den Personen mit Sturzgeschichte. Bei den Personen ohne Stürze in der Verganheneit hat die Gruppe mit Behandlung 1 am wenigsten Stürze. Bei den Personen mit Stürzen in der Vergangenheit, stürzen die Personen mit der Behandlug 1 am meisten.

# http://derekogle.com/fishR/2021-05-25-fitPlot-replacement

Wir können das noch mit dem Modell ohne Interaktion vergleichen:

lr_1<-glm(Faller~Treatment+Fallen_past12months_yes_no+Age+Women, data=data_script, family = "binomial")
jtools::summ(lr_1, exp=TRUE, confint=TRUE)
Observations 229
Dependent variable Faller
Type Generalized linear model
Family binomial
Link logit
χ²(4) 5.04
Pseudo-R² (Cragg-Uhler) 0.03
Pseudo-R² (McFadden) 0.02
AIC 321.16
BIC 338.33
exp(Est.) 2.5% 97.5% z val. p
(Intercept) 0.80 0.03 18.49 -0.14 0.89
Treatment2 1.07 0.61 1.88 0.23 0.82
Fallen_past12months_yes_noFall History 1.74 1.00 3.01 1.97 0.05
Age 0.99 0.96 1.03 -0.33 0.74
Women 1.29 0.71 2.35 0.83 0.41
Standard errors: MLE
new_noInteraction.data<- data_script %>% 
  modelr::add_predictions(lr_1, type="response")



library(ggplot2)
pd <- position_dodge(width=0.2)
ggplot(new_noInteraction.data, aes(x=Fallen_past12months_yes_no, y=pred, colour=Treatment))+
  #geom_boxplot()+
  stat_summary(fun.data=mean_cl_normal,geom="errorbar",size=0.8,width=0.05,position=pd) +
  stat_summary(fun=mean,geom="point",position=pd, size=3)+
  theme_classic()+
  ylab("Probability of a Fall")+
  scale_colour_manual(values=c("#7D42DB", "#DB8823"))+
  ylim(0,1)
In dieser Analyse berücksichtigen wir die Interaktion zwischen Sturz in der Geschichte in der Behandlung nicht. Wir sehen, dass die Personen mit einem Sturz in der Geschichte häufiger stürzen

Abbildung 1.11: In dieser Analyse berücksichtigen wir die Interaktion zwischen Sturz in der Geschichte in der Behandlung nicht. Wir sehen, dass die Personen mit einem Sturz in der Geschichte häufiger stürzen