Diedit setelah umpan balik bermanfaat dari Mark White (terima kasih!)
Salah satu opsi adalah untuk menghitung kedua hubungan (B1 dengan A, dan B2 dengan A) dalam model tunggal yang juga memperkirakan perbedaan di antara mereka. Ini mudah dicapai dengan regresi berganda . Anda akan menjalankan model dengan A sebagai variabel dependen, dan kemudian satu variabel kontinu dengan semua skor untuk B1 dan B2, variabel kategori yang menunjukkan variabel mana itu (B1 atau B2), dan interaksi di antara mereka. Dalam 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
Berikut adalah korelasi dari data yang saya hasilkan:
> 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
>
Mengubah format data untuk memenuhi kebutuhan model (format ulang ke "panjang"):
> mydata <- as.data.frame(mydata) %>%
+ gather("var", "value", B1, B2)
>
Inilah modelnya:
ringkasan (lm (A ~ value * var, data = 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
Hasil di sini (dari data buatan saya) menunjukkan bahwa ada hubungan yang signifikan antara B1 dan A (tes dari koefisien "nilai", karena B1 adalah kelompok referensi untuk koefisien "var"), tetapi perbedaannya adalah antara hubungan B1 dengan A dan hubungan B2 dengan A tidak signifikan (uji koefisien "value: varB2").
Jika Anda suka berpikir dalam hal korelasi daripada koefisien regresi, cukup standarisasi semua variabel Anda (A, B1, dan B2) sebelum menjalankan model dan koefisien regresi yang akan Anda dapatkan akan distandarisasi (tidak sama persis dengan korelasi zero-order, tetapi lebih dekat dalam hal interpretasi).
Juga mencatat bahwa ini akan membatasi analisis Anda hanya kasus-kasus yang memiliki baik B1 dan B2 ( listwise penghapusan ). Selama itu membuat Anda memiliki data yang cukup untuk tidak kekurangan tenaga, dan selama data yang hilang hilang secara acak (atau proporsi yang cukup kecil dari total data tidak menjadi masalah bahkan jika mereka hilang secara non-acak), maka itu tidak masalah.
Fakta bahwa Anda membatasi analisis Anda ke dataset yang sama untuk memperkirakan efek untuk B1 dan B2 (daripada menggunakan dataset yang sedikit berbeda, berdasarkan pada pola-pola yang hilang) memiliki keuntungan dalam membuat interpretasi perbedaan antara korelasi sedikit sedikit. lebih mudah. Jika Anda menghitung korelasi secara terpisah untuk masing-masing dan kemudian menguji perbedaan di antara mereka , Anda mengalami masalah bahwa data yang mendasarinya sedikit berbeda dalam setiap kasus --- setiap perbedaan yang Anda lihat bisa disebabkan oleh perbedaan dalam sampel sebanyak perbedaan dalam hubungan aktual antar variabel.