Đã chỉnh sửa sau khi phản hồi hữu ích từ Mark White (cảm ơn bạn!)
Một lựa chọn là tính toán cả hai mối quan hệ (B1 với A và B2 với A) trong một mô hình duy nhất cũng ước tính sự khác biệt giữa chúng. Điều này là dễ dàng để thực hiện với nhiều hồi quy . Bạn sẽ chạy một mô hình với A là biến phụ thuộc và sau đó là một biến liên tục với tất cả các điểm cho B1 và B2, một biến phân loại cho biết đó là biến nào (B1 hoặc B2) và tương tác giữa chúng. Trong 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
Dưới đây là các mối tương quan từ dữ liệu tôi tạo ra:
> 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
>
Thay đổi định dạng của dữ liệu để đáp ứng nhu cầu của mô hình (định dạng lại thành "dài"):
> mydata <- as.data.frame(mydata) %>%
+ gather("var", "value", B1, B2)
>
Đây là mô hình:
tóm tắt (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
Các kết quả ở đây (từ dữ liệu đã tạo của tôi) cho thấy có mối quan hệ đáng kể giữa B1 và A (thử nghiệm hệ số "giá trị", vì B1 là nhóm tham chiếu cho hệ số "var"), nhưng sự khác biệt giữa mối quan hệ B1 với A và mối quan hệ B2 với A là không đáng kể (thử nghiệm hệ số "giá trị: varB2").
Nếu bạn thích suy nghĩ về mặt tương quan thay vì hệ số hồi quy, chỉ cần chuẩn hóa tất cả các biến của bạn (A, B1 và B2) trước khi chạy mô hình và các hệ số hồi quy bạn sẽ nhận được sẽ được chuẩn hóa (không hoàn toàn giống như một tương quan không thứ tự, nhưng gần hơn nhiều về mặt giải thích).
Cũng lưu ý rằng điều này sẽ hạn chế phân tích của bạn chỉ trong các trường hợp có cả B1 và B2 ( xóa theo cách liệt kê ). Miễn là điều đó khiến bạn có đủ dữ liệu để không bị thiếu năng lượng và miễn là dữ liệu bị thiếu một cách ngẫu nhiên (hoặc một tỷ lệ đủ nhỏ trong tổng số dữ liệu sẽ không còn quan trọng ngay cả khi chúng bị thiếu một cách không chính đáng), thì điều đó cũng ổn.
Thực tế là bạn đang giới hạn phân tích của mình vào cùng một bộ dữ liệu để ước tính hiệu ứng cho cả B1 và B2 (thay vì sử dụng các bộ dữ liệu hơi khác nhau, dựa trên các mẫu thiếu khác nhau) có lợi thế là giải thích sự khác biệt giữa các tương quan một chút đơn giản hơn. Nếu bạn tính toán các mối tương quan riêng biệt cho từng loại và sau đó kiểm tra sự khác biệt giữa chúng , bạn sẽ gặp phải vấn đề là dữ liệu cơ bản hơi khác nhau trong mỗi trường hợp --- bất kỳ sự khác biệt nào bạn thấy có thể là do sự khác biệt trong các mẫu nhiều như sự khác biệt trong các mối quan hệ thực tế giữa các biến.