Nach hilfreichem Feedback von Mark White bearbeitet (danke!)
Eine Möglichkeit besteht darin, beide Beziehungen (B1 mit A und B2 mit A) in einem einzigen Modell zu berechnen, das auch den Unterschied zwischen ihnen schätzt. Dies ist mit multipler Regression leicht zu erreichen . Sie würden ein Modell mit A als abhängige Variable und dann eine kontinuierliche Variable mit allen Bewertungen für B1 und B2 ausführen, eine kategoriale Variable, die angibt, um welche Variable es sich handelt (B1 oder B2), und die Interaktion zwischen ihnen. In r:
> set.seed(24601)
>
> library(tidyverse)
> library(mvtnorm)
> cov <- matrix(c(1, .4, .16,.4, 1, .4, .16, .4, 1), ncol=3, byrow=TRUE)
> mydata <- rmvnorm(n=100, sigma = cov)
> colnames(mydata) = c("A", "B1", "B2")
> head(mydata)
A B1 B2
[1,] -0.1046382 0.6031253 0.5641158
[2,] -1.9303293 -0.7663828 -0.7921836
[3,] 0.1244192 -0.4413581 -1.2376256
[4,] -3.2822601 -1.2512055 -0.5586773
[5,] -0.9543368 -0.1743740 1.1884185
[6,] -0.4843183 -0.2612668 -0.7161938
Hier sind die Korrelationen aus den Daten, die ich generiert habe:
> cor(mydata)
A B1 B2
A 1.0000000 0.4726093 0.3043496
B1 0.4726093 1.0000000 0.3779376
B2 0.3043496 0.3779376 1.0000000
>
Ändern des Formats der Daten, um den Anforderungen des Modells zu entsprechen (Neuformatierung auf "lang"):
> mydata <- as.data.frame(mydata) %>%
+ gather("var", "value", B1, B2)
>
Hier ist das Modell:
Zusammenfassung (lm (A ~ Wert * var, Daten = mydata))
Call:
lm(formula = A ~ value * var, data = mydata)
Residuals:
Min 1Q Median 3Q Max
-2.89310 -0.52638 0.02998 0.64424 2.85747
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.09699 0.09014 -1.076 0.283
value 0.47445 0.09305 5.099 8.03e-07 ***
varB2 -0.10117 0.12711 -0.796 0.427
value:varB2 -0.13256 0.13965 -0.949 0.344
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.891 on 196 degrees of freedom
Multiple R-squared: 0.158, Adjusted R-squared: 0.1451
F-statistic: 12.26 on 3 and 196 DF, p-value: 2.194e-07
Die Ergebnisse hier (aus meinen erfundenen Daten) legen nahe, dass es eine signifikante Beziehung zwischen B1 und A gibt (der Test des "Wert" -Koeffizienten, da B1 die Referenzgruppe für den "var" -Koeffizienten ist), aber dass der Unterschied zwischen der B1-Beziehung zu A und der B2-Beziehung zu A ist nicht signifikant (der Test des Koeffizienten "Wert: varB2").
Wenn Sie lieber in Korrelation als in Regressionskoeffizienten denken möchten, standardisieren Sie einfach alle Ihre Variablen (A, B1 und B2), bevor Sie das Modell ausführen. Die erhaltenen Regressionskoeffizienten werden standardisiert (nicht ganz dasselbe wie a Korrelation nullter Ordnung, aber in Bezug auf die Interpretation viel näher).
Beachten Sie auch, dass dies Ihre Analyse auf die Fälle beschränkt, in denen sowohl B1 als auch B2 vorhanden sind ( listweises Löschen ). Solange Sie genug Daten haben, um nicht unterversorgt zu sein, und solange die fehlenden Daten zufällig fehlen (oder ein ausreichend kleiner Teil der Gesamtdaten, um nicht viel zu bedeuten, auch wenn sie nicht zufällig fehlen), ist das in Ordnung.
Die Tatsache, dass Sie Ihre Analyse auf denselben Datensatz beschränken, um die Auswirkungen für B1 und B2 abzuschätzen (anstatt geringfügig unterschiedliche Datensätze zu verwenden, basierend auf den unterschiedlichen Mustern des Fehlens), hat den Vorteil, dass der Unterschied zwischen den Korrelationen ein wenig interpretiert wird direkter. Wenn Sie die Korrelationen für jede separat berechnen und dann den Unterschied zwischen ihnen testen , stoßen Sie auf das Problem, dass die zugrunde liegenden Daten in jedem Fall geringfügig unterschiedlich sind - jeder Unterschied, den Sie sehen, kann sowohl auf Unterschiede in den Stichproben als auch auf Unterschiede zurückzuführen sein in den tatsächlichen Beziehungen zwischen Variablen.