ฉันจะตรวจสอบว่าสองสหสัมพันธ์มีความแตกต่างอย่างมีนัยสำคัญได้อย่างไร


9

ฉันต้องการพิจารณาว่าชุดข้อมูลสองชุดใด (B1, B2) ดีกว่าสัมพันธ์ (pearsons r) กับชุดอื่น (A) ไม่มีข้อมูลในชุดข้อมูลทั้งหมด ฉันจะทราบได้อย่างไรว่าความสัมพันธ์ที่เกิดขึ้นมีความแตกต่างอย่างมีนัยสำคัญหรือไม่?

เช่นค่า 8426 มีทั้ง A และ B1, r = 0.74 8798 มีอยู่ทั้ง A และ B2, r = 0.72

ฉันคิดว่าคำถามนี้อาจช่วยได้ แต่ก็ยังไม่ได้รับคำตอบ: จะรู้ได้อย่างไรว่าระบบหนึ่งดีกว่าอีกระบบหนึ่งอย่างมาก


เราสามารถสมมติใหญ่ได้ไหม? n
Firebug

1
@Firebug n มักจะอยู่ระหว่าง 7,000 และ 8760
กรีนกลาส

คำตอบ:


6

บางครั้งคนเราอาจจะสามารถที่จะประสบความสำเร็จในการถดถอยพหุคูณที่เป็น DV ที่ B คือคนที่คะแนนมีโยและ C คือรหัสหุ่นที่บอกว่ามันเป็นอย่างใดอย่างหนึ่งหรือ B1 lm(A~B+C+B*C)B2: คำศัพท์โต้ตอบB*Cจะบอกคุณว่าความสัมพันธ์นั้นแตกต่างกันหรือไม่ในขณะที่ความชันเรียบง่ายระหว่าง A และ B ที่ทั้งสองระดับ C จะบอกความสัมพันธ์กับคุณ

อย่างไรก็ตามมันเป็นไปไม่ได้ที่จะพอดีกับการเปรียบเทียบทุกประเภทระหว่างเงื่อนไขในกรอบนี้ cocorแพคเกจ R เป็นประโยชน์อย่างมากและมันมีง่ายมากอินเตอร์เฟซจุดและคลิกบนเว็บ โปรดทราบว่าด้วยข้อมูลที่ขาดหายไปที่แตกต่างกันคุณไม่มีทั้งอิสระและตัวอย่างที่ต้องพึ่งพา ฉันจะใช้การลบแบบตามรายการที่นี่เพื่อให้ง่าย (และพลังงานไม่ใช่ปัญหาสำหรับคุณ)


2
แม้ว่านี่จะเป็นคำตอบที่สั้นที่สุดการเชื่อมโยงไปยัง cocor คือสิ่งที่นำฉันไปสู่ข้อมูลที่ฉันต้องการ ขอบคุณมาก.
Greenglass

15

โอ้พลังของ bootstrap ให้ดูเวกเตอร์สามตัวเพื่อเป็นภาพประกอบ:A, B1 และ B2 ที่อยู่:

โอR(A,B1)=0.92
โอR(A,B2)=0.86
ป้อนคำอธิบายรูปภาพที่นี่

เป้าหมายคือการตรวจสอบว่าความสัมพันธ์ของชุดข้อมูลทั้งสองนี้แตกต่างกันอย่างมีนัยสำคัญหรือไม่ โดยการเก็บตัวอย่าง bootstrap ดังนี้:

 B <- 10000
 cor1 <- cor2 <- rep(0, B)
 for(i in 1:B){
   samp <- sample(n, n, TRUE)  
   cor1[i] <- cor(A[samp], B1[samp])
   cor2[i] <- cor(A[samp], B2[samp])
 }

เราสามารถพล็อตการกระจาย bootstrap ของสอง correlations: ป้อนคำอธิบายรูปภาพที่นี่

นอกจากนี้เรายังสามารถรับช่วงความมั่นใจ 95% สำหรับ โอR(A,Bผม).

95% CI สำหรับ โอRR(A,B1):

(0.897,0.947)

95% CI สำหรับ โอRR(A,B2):

(0.810,0.892)

ความจริงที่ว่าช่วงเวลาไม่ทับซ้อนกัน (แทบ) ทำให้เรามีหลักฐานบางอย่างว่าความแตกต่างในความสัมพันธ์ตัวอย่างที่เราสังเกตเห็นมีความสำคัญทางสถิติแน่นอน

เมื่ออะมีบาชี้ให้เห็นในความคิดเห็นผลลัพธ์ที่ "ทรงพลัง" มากขึ้นนั้นมาจากการสร้างความแตกต่างให้กับแต่ละตัวอย่างบูตสแตรป ป้อนคำอธิบายรูปภาพที่นี่

95% CI สำหรับความแตกต่างระหว่างสองคือ:

(0.019,0.108)

เมื่อสังเกตว่าช่วงเวลา (เพิ่งจะ) ไม่รวม 0 เรามีหลักฐานคล้ายกันเหมือนเมื่อก่อน


เพื่อจัดการปัญหาข้อมูลที่ขาดหายไปเพียงแค่เลือกตัวอย่าง bootstrap ของคุณจากคู่ที่มีอยู่ในชุดข้อมูลทั้งสอง


7
คุณสามารถปรับปรุงขั้นตอนนี้ได้โดยการคำนวณ 95% CI ของ cor1-cor2 และตรวจสอบว่ามันมีค่าศูนย์หรือไม่
อะมีบา

1
นั่นเป็นจุดที่ดี ฉันจะรวมที่ไม่นาน
knrumsey

เจ๋ง +1
อะมีบา

1
ขอบคุณสำหรับคำตอบนี้ มันน่าสนใจมากและเขียนอย่างไม่เป็นทางการแม้ว่ามันจะไม่ใช่สิ่งที่ฉันใช้
กรีนกลาส

7

สมมติว่าการแปลง Fisher: R1'=tanh-1(R1) และ R2'=tanh-1(R2). หรือด้วยวิธีที่เท่าเทียมและชัดเจนกว่านี้ (ต้องขอบคุณ@dbwilson !)R1'=12LN(1+R11-R1) และ R2'=12LN(1+R21-R2).

จากนั้นตามด้วยเนื่องจากความจริงที่ว่าตัวแปรแปรเปลี่ยนของฟิชเชอร์มีการกระจายแบบปกติและผลรวมของตัวแปรสุ่มแบบกระจายยังคงกระจายตามปกติ:

Z=R1'-R2'S~ยังไม่มีข้อความ(0,1)
กับ

S=S12+S22=1n1-3+1n2-3

ดังนั้นคุณทดสอบสมมติฐานว่าง H0:Z=0 โดยได้รับ P(Z0)=2P(Z>|Z|).

เมื่อเทียบกับนิสัย เสื้อ- ทดสอบสังเกตว่าเราไม่สามารถใช้ เสื้อ- สถิติอย่างง่ายดายดูการกระจายตัวของความแตกต่างของการแจกแจงแบบสองทีคืออะไรดังนั้นจึงมีการพิจารณาที่จะพิจารณาในระดับความเป็นอิสระที่มีอยู่ในการคำนวณเช่นเราถือว่าn มีขนาดใหญ่พอที่การประมาณค่าแบบปกติจะสมเหตุสมผลตามลำดับ เสื้อ สถิติ.

-

หลังจากความคิดเห็นโดย@Joshเราสามารถรวมความเป็นไปได้ของการพึ่งพาซึ่งกันและกันระหว่างกลุ่มตัวอย่าง (โปรดจำไว้ว่าสหสัมพันธ์ทั้งสองขึ้นอยู่กับการกระจายของ A) โดยไม่ต้องสมมติตัวอย่างอิสระและใช้ความไม่เท่าเทียมกัน Cauchy Schwarz เราสามารถได้รับขอบเขตบนดังต่อไปนี้ (ดู: ฉันจะค้นหาค่าเบี่ยงเบนมาตรฐานของความแตกต่างระหว่างสองวิธีได้อย่างไร ):

SS1+S2

S1n1-3+1n2-3

2
นี่จะเป็นคำแนะนำของฉัน แต่สูตรทางเลือกสำหรับการแปลง z ของ Fisher คือ z = .5 * ln ((1 + r) / (1-r)) ทำเช่นนี้สำหรับแต่ละ r และดำเนินการตามข้างต้น
dbwilson

@dbwilson โอ้ใช่ (+1) พวกเขาเทียบเท่าฉันจะใช้เพิ่มคำแนะนำของคุณเพื่อให้ชัดเจนยิ่งขึ้นสำหรับผู้ชมที่กว้างขึ้น
Firebug

สูตรนี้ไม่ถือว่าเป็นอิสระหรือไม่ R1 และ R2? ฉันคิดว่าพวกเขาไม่ใช่ ...
Josh

6

แก้ไขหลังจากความคิดเห็นที่เป็นประโยชน์จาก Mark White (ขอบคุณ!)

ทางเลือกหนึ่งคือการคำนวณทั้งความสัมพันธ์ (B1 กับ A และ B2 กับ A) ในรูปแบบเดียวที่ประเมินความแตกต่างระหว่างพวกเขา นี่เป็นเรื่องง่ายที่จะบรรลุด้วยการถดถอยหลายครั้ง คุณจะเรียกใช้โมเดลที่มี A เป็นตัวแปรตามและจากนั้นหนึ่งตัวแปรต่อเนื่องที่มีคะแนนทั้งหมดสำหรับ B1 และ B2 ซึ่งเป็นตัวแปรเด็ดขาดที่ระบุว่าตัวแปรใดคือ (B1 หรือ B2) และการโต้ตอบระหว่างกัน ใน 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

นี่คือความสัมพันธ์จากข้อมูลที่ฉันสร้าง:

> 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
> 

การเปลี่ยนรูปแบบของข้อมูลเพื่อตอบสนองความต้องการของรูปแบบ (การจัดรูปแบบเป็น "ยาว"):

> mydata <- as.data.frame(mydata) %>% 
+   gather("var", "value", B1, B2)
> 

นี่คือรูปแบบ:

สรุป (lm (ค่า ~ 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

ผลลัพธ์ที่นี่ (จากข้อมูลที่สร้างขึ้นของฉัน) แนะนำว่ามีความสัมพันธ์ที่สำคัญระหว่าง B1 และ A (การทดสอบค่าสัมประสิทธิ์ "ค่า" เนื่องจาก B1 เป็นกลุ่มอ้างอิงสำหรับค่าสัมประสิทธิ์ "var") แต่ความแตกต่างนั้น ระหว่างความสัมพันธ์ B1 กับ A และความสัมพันธ์ B2 กับ A ไม่สำคัญ (การทดสอบค่าสัมประสิทธิ์ "value: varB2")

ถ้าคุณชอบคิดในแง่ของความสัมพันธ์มากกว่าสัมประสิทธิ์การถดถอยเพียงแค่สร้างมาตรฐานของตัวแปรทั้งหมด (A, B1 และ B2) ก่อนที่จะเรียกใช้แบบจำลองและสัมประสิทธิ์การถดถอยที่คุณได้รับจะได้มาตรฐาน (ไม่ใช่สิ่งเดียวกัน มีความสัมพันธ์เป็นศูนย์ลำดับ แต่ใกล้เคียงกับการตีความมากขึ้น)

นอกจากนี้โปรดทราบว่าสิ่งนี้จะ จำกัด การวิเคราะห์ของคุณเฉพาะกรณีที่มีทั้ง B1 และ B2 ( การลบตามรายการ ) ตราบใดที่ทำให้คุณมีข้อมูลมากพอที่จะไม่ถูกลดทอนและตราบใดที่ข้อมูลที่ขาดหายไปนั้นหายไปโดยการสุ่ม (หรือสัดส่วนที่น้อยมากของข้อมูลทั้งหมดที่จะไม่สำคัญมากแม้ว่าพวกเขาจะหายไปแบบไม่สุ่ม) ก็ตาม

ความจริงที่ว่าคุณกำลัง จำกัด การวิเคราะห์ของคุณไปยังชุดข้อมูลเดียวกันสำหรับการประเมินผลกระทบสำหรับทั้ง B1 และ B2 (แทนที่จะใช้ชุดข้อมูลที่แตกต่างกันเล็กน้อยตามรูปแบบของการหายไปที่ต่างกัน) มีข้อได้เปรียบในการตีความความแตกต่างระหว่างความสัมพันธ์เล็กน้อย ตรงไปตรงมามากขึ้น หากคุณคำนวณความสัมพันธ์แยกกันสำหรับแต่ละรายการจากนั้นทดสอบความแตกต่างระหว่างปัญหาเหล่านั้นคุณพบปัญหาที่ข้อมูลพื้นฐานแตกต่างกันเล็กน้อยในแต่ละกรณี --- ความแตกต่างใด ๆ ที่คุณเห็นอาจเกิดจากความแตกต่างของกลุ่มตัวอย่าง ในความสัมพันธ์ที่แท้จริงระหว่างตัวแปร


2
ไม่ใช่กรณีที่lm(A~B1*B2)จะทดสอบว่าความสัมพันธ์ระหว่างB1และA ขึ้นอยู่กับB2คะแนนของใคร เงื่อนไขการโต้ตอบนั้นไม่ได้ทดสอบว่าสหสัมพันธ์นั้นแตกต่างกันหรือไม่ เป็นการทดสอบว่าตัวทำนายสองตัวมีปฏิกิริยาต่อกันหรือไม่ คุณสามารถสร้างรหัสหุ่นCที่รหัสหรือไม่ว่าขนาดสำหรับBเป็นหรือB1 B2จากนั้นจะบอกคุณว่าความสัมพันธ์ระหว่างBและAขึ้นอยู่กับว่ามันเป็นB1หรือB2นั่นคือถ้าความสัมพันธ์ที่แตกต่างกัน
Mark White

1
@ MarkWhite โอ้เอ้ยคุณพูดถูก! ขอบคุณสำหรับการจับที่ อ๊ะ! ฉันจะแก้ไขเพื่อแก้ไข
Rose Hartman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.