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


14

สมมติว่าฉันมีผู้เข้าร่วมยังไม่มีข้อความคนแต่ละคนให้การตอบสนองY 20 ครั้ง, 10 ครั้งในเงื่อนไขหนึ่งและอีก 10 ครั้ง ฉันพอดีกับโมเดลเอฟเฟกต์เชิงเส้นผสมเปรียบเทียบYในแต่ละเงื่อนไข นี่คือตัวอย่างที่จำลองได้ซึ่งจำลองสถานการณ์นี้โดยใช้lme4แพ็คเกจในR:

library(lme4)
fml <- "~ condition + (condition | participant_id)"
d <- expand.grid(participant_id=1:40, trial_num=1:10)
d <- rbind(cbind(d, condition="control"), cbind(d, condition="experimental"))

set.seed(23432)
d <- cbind(d, simulate(formula(fml), 
                       newparams=list(beta=c(0, .5), 
                                      theta=c(.5, 0, 0), 
                                      sigma=1), 
                       family=gaussian, 
                       newdata=d))

m <- lmer(paste("sim_1 ", fml), data=d)
summary(m)

แบบจำลองmทำให้เกิดผลกระทบคงที่สองแบบ (การสกัดกั้นและความลาดเอียงตามเงื่อนไข) และผลกระทบแบบสุ่มสามแบบ (การสกัดกั้นแบบสุ่มโดยผู้เข้าร่วม, ความลาดชันแบบสุ่มโดยผู้เข้าร่วมสำหรับสภาพและความสัมพันธ์แบบตัดขวางลาด)

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

ป้อนคำอธิบายรูปภาพที่นี่


โบนัส

สมมติว่าแบบจำลองมีความซับซ้อนมากขึ้นเล็กน้อย: ผู้เข้าร่วมแต่ละคนมีประสบการณ์ 10 สิ่งเร้า 20 ครั้งต่อ 10 ครั้งในเงื่อนไขหนึ่งและอีก 10 ครั้ง ดังนั้นจึงมีเอฟเฟกต์แบบสุ่มข้ามสองชุด: เอฟเฟกต์แบบสุ่มสำหรับผู้เข้าร่วมและเอฟเฟกต์แบบสุ่มสำหรับการกระตุ้น นี่คือตัวอย่างที่ทำซ้ำได้:

library(lme4)
fml <- "~ condition + (condition | participant_id) + (condition | stimulus_id)"
d <- expand.grid(participant_id=1:40, stimulus_id=1:10, trial_num=1:10)
d <- rbind(cbind(d, condition="control"), cbind(d, condition="experimental"))

set.seed(23432)
d <- cbind(d, simulate(formula(fml), 
                       newparams=list(beta=c(0, .5), 
                                      theta=c(.5, 0, 0, .5, 0, 0), 
                                      sigma=1), 
                       family=gaussian, 
                       newdata=d))

m <- lmer(paste("sim_1 ", fml), data=d)
summary(m)

conditionผมอยากจะเปรียบเทียบสถิติขนาดของแบบสุ่มโดยผู้เข้าร่วมการสกัดกั้นความแปรปรวนในกลุ่มที่กำหนดโดย ฉันจะทำเช่นนั้นและกระบวนการแตกต่างจากสถานการณ์ที่อธิบายไว้ข้างต้นหรือไม่?


แก้ไข

หากต้องการระบุเพิ่มเติมเกี่ยวกับสิ่งที่ฉันกำลังมองหาอยู่ฉันต้องการทราบว่า:

  1. คำถามคือ "เป็นการตอบสนองแบบมีเงื่อนไขภายในแต่ละเงื่อนไข (เช่นค่าการสกัดแบบสุ่มในแต่ละเงื่อนไข) แตกต่างจากกันอย่างมากนอกเหนือจากสิ่งที่เราคาดหวังจากข้อผิดพลาดในการสุ่มตัวอย่าง" เป็นคำถามที่กำหนดชัดเจน (เช่นคือคำถามนี้ แม้แต่คำตอบในเชิงทฤษฎี)? ถ้าไม่ทำไมล่ะ
  2. หากคำตอบของคำถาม (1) คือใช่ฉันจะตอบได้อย่างไร ฉันต้องการRใช้งาน แต่ฉันไม่ได้ผูกติดอยู่กับlme4แพ็คเกจ - ตัวอย่างเช่นดูเหมือนว่าOpenMxแพ็คเกจมีความสามารถในการรองรับการวิเคราะห์หลายกลุ่มและหลายระดับ ( https: //openmx.ssri.psu edu / openmx-features ) และดูเหมือนว่าคำถามประเภทนี้น่าจะตอบได้ในกรอบงาน SEM

1
@ MarkWhite ฉันได้อัปเดตคำถามเพื่อตอบความคิดเห็นของคุณ ฉันหมายถึงฉันต้องการเปรียบเทียบส่วนเบี่ยงเบนมาตรฐานของการสกัดกั้นผู้เข้าร่วมเมื่อพวกเขาให้การตอบสนองในสภาพการควบคุม vs เมื่อพวกเขาให้การตอบสนองในสภาพการทดลอง ผมต้องการที่จะทำเช่นนี้ทางสถิติคือทดสอบว่าแตกต่างในค่าเบี่ยงเบนมาตรฐานดักที่แตกต่างกันจาก 0
แพทริคเอส Forscher

2
ฉันเขียนคำตอบแล้ว แต่จะนอนบนเพราะฉันไม่แน่ใจว่ามันมีประโยชน์มาก คำถามลงมาที่ฉันไม่คิดว่าจะทำสิ่งที่คุณถาม ผลของการสกัดกั้นแบบสุ่มคือความแปรปรวนในค่าเฉลี่ยของผู้เข้าร่วมเมื่ออยู่ในสภาวะควบคุม ดังนั้นเราจึงไม่สามารถดูความแปรปรวนของสิ่งเหล่านั้นเพื่อการสังเกตในสภาพการทดลอง การสกัดกั้นถูกกำหนดไว้ที่ระดับบุคคลและเงื่อนไขอยู่ที่ระดับการสังเกต หากคุณพยายามเปรียบเทียบความแปรปรวนระหว่างเงื่อนไขฉันจะคิดถึงแบบจำลองเฮเทอโรเซสติกที่มีเงื่อนไข
มาร์คไวท์

2
ฉันกำลังแก้ไขและส่งบทความที่ฉันมีผู้เข้าร่วมที่ตอบสนองต่อสิ่งเร้า ผู้เข้าร่วมแต่ละคนต้องเผชิญกับหลายเงื่อนไขและการกระตุ้นแต่ละครั้งจะได้รับการตอบสนองในหลายเงื่อนไข - กล่าวอีกนัยหนึ่งการศึกษาของฉันจำลองการตั้งค่าที่ฉันอธิบายไว้ในคำอธิบาย "โบนัส" ของฉัน ในหนึ่งในกราฟของฉันปรากฏว่าการตอบสนองของผู้เข้าร่วมโดยเฉลี่ยมีความแปรปรวนมากกว่าหนึ่งในเงื่อนไขใด ๆ ผู้ตรวจสอบขอให้ฉันทดสอบว่านี่เป็นเรื่องจริงหรือไม่
Patrick S. Forscher

2
โปรดดูที่นี่stats.stackexchange.com/questions/322213สำหรับวิธีการตั้งค่ารุ่น lme4 พร้อมพารามิเตอร์ความแปรปรวนที่แตกต่างกันสำหรับแต่ละระดับของตัวแปรการจัดกลุ่ม ฉันไม่แน่ใจว่าจะทำการทดสอบสมมติฐานว่าพารามิเตอร์ความแปรปรวนสองตัวนั้นเท่ากันหรือไม่ โดยส่วนตัวแล้วฉันมักจะชอบที่จะบู๊ตเรื่องและสิ่งเร้าเพื่อให้ได้ช่วงความมั่นใจหรืออาจจะตั้งค่าการทดสอบสมมติฐานที่มีลักษณะคล้ายการเรียงสับเปลี่ยน
อะมีบาพูดว่า Reinstate Monica

3
ฉันเห็นด้วยกับความคิดเห็นของ @MarkWhite ว่าคำถาม "คือความแปรปรวนของการสกัดกั้นแบบสุ่มที่แตกต่างกันอย่างมาก ... " ไม่มีความชัดเจนที่ดีที่สุดและไร้สาระที่สุดเพราะการสกัดกั้นนั้นหมายถึงค่า Y ในกลุ่มใดกลุ่มหนึ่ง กลุ่มกำหนดค่าเป็น 0) ดังนั้นการเปรียบเทียบ "ดัก" ในกลุ่มที่พูดอย่างเคร่งครัดไม่สมเหตุสมผล ฉันคิดว่าวิธีที่ดีกว่าในการเรียบเรียงคำถามของคุณใหม่เมื่อฉันเข้าใจจะเป็นเช่น: "ความแปรปรวนของการตอบสนองแบบมีเงื่อนไขหมายถึงผู้เข้าร่วมในเงื่อนไข A กับเงื่อนไข B ไม่เท่ากันหรือไม่"
Jake Westfall

คำตอบ:


6

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

คำตอบสั้น ๆ

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

# switch to numeric (not factor) contrast codes
d$contrast <- 2*(d$condition == 'experimental') - 1

# reduced model without correlation parameter
mod1 <- lmer(sim_1 ~ contrast + (contrast || participant_id), data=d)

# full model with correlation parameter
mod2 <- lmer(sim_1 ~ contrast + (contrast | participant_id), data=d)

# likelihood ratio test
anova(mod1, mod2)

คำอธิบายภาพ / สัญชาตญาณ

เพื่อให้คำตอบนี้สมเหตุสมผลคุณต้องมีความเข้าใจที่เข้าใจง่ายว่าค่าต่าง ๆ ของพารามิเตอร์สหสัมพันธ์สำหรับข้อมูลที่สังเกตได้อย่างไร พิจารณาบรรทัดการถดถอยเฉพาะเรื่อง (แตกต่างกันแบบสุ่ม) โดยพื้นฐานแล้วพารามิเตอร์ความสัมพันธ์จะควบคุมว่าเส้นการถดถอยของผู้เข้าร่วม "ปัดไปทางขวา" (ความสัมพันธ์เชิงบวก) หรือ "พัดออกไปทางซ้าย" (ความสัมพันธ์เชิงลบ) เทียบกับจุดX=0โดย X คือ X ตัวแปร. ความแปรปรวนไม่เท่ากันอย่างใดอย่างหนึ่งเหล่านี้บ่งบอกถึงการตอบสนองต่อค่าเฉลี่ยตามเงื่อนไขของผู้เข้าร่วม นี่คือภาพประกอบด้านล่าง:

สหสัมพันธ์แบบสุ่ม

ในพล็อตนี้เราไม่สนใจการสังเกตหลายครั้งที่เรามีสำหรับแต่ละเรื่องในแต่ละเงื่อนไขและเพียงแค่พล็อตวิธีการสุ่มสองตัวอย่างของแต่ละเรื่องโดยมีเส้นเชื่อมต่อกับพวกเขา (ข้อมูลนี้สร้างขึ้นจากอาสาสมัคร 10 คนไม่ใช่ข้อมูลที่โพสต์ใน OP)

ในคอลัมน์ด้านซ้ายที่มีความสัมพันธ์เชิงลบความลาดชันตัดแข็งแกร่งแฟนเส้นถดถอยออกไปยังญาติซ้ายไปที่จุดX=0 0 ดังที่คุณเห็นได้อย่างชัดเจนในภาพสิ่งนี้นำไปสู่ความแปรปรวนที่มากขึ้นในวิธีการสุ่มของอาสาสมัครในสภาพX=-1มากกว่าในสภาพX=1 1

คอลัมน์ทางด้านขวาแสดงภาพสะท้อนกลับของรูปแบบนี้ ในกรณีนี้มีความแปรปรวนมากขึ้นในวิชาหมายถึงการสุ่มในสภาพX=1กว่าในสภาพX=-1 1

คอลัมน์ที่อยู่ตรงกลางแสดงให้เห็นว่าเกิดอะไรขึ้นเมื่อความลาดชันแบบสุ่มและการสกัดกั้นแบบสุ่มไม่เกี่ยวข้องกัน ซึ่งหมายความว่าแฟนเส้นถดถอยออกไปทางซ้ายตรงมากที่สุดเท่าที่แฟนพวกเขาออกไปทางขวาเมื่อเทียบกับจุดX=0 0 นี่ก็หมายความว่าผลต่างของค่าเฉลี่ยของอาสาสมัครในสองเงื่อนไขนั้นเท่ากัน

มันสำคัญอย่างยิ่งที่เราใช้รูปแบบการเข้ารหัสความคมชัดแบบรวมศูนย์ไม่เป็นรหัสจำลอง (นั่นคือไม่ได้ตั้งกลุ่มที่X=0เทียบกับX=1 ) มันเป็นเพียงภายใต้รูปแบบการเข้ารหัสความคมชัดที่เรามีความสัมพันธ์นี้ซึ่งความแปรปรวนจะเท่ากันถ้าหากความสัมพันธ์ระหว่างความชัน - จุดตัดเท่ากับ 0 รูปด้านล่างพยายามสร้างสัญชาตญาณนั้น:

ป้อนคำอธิบายรูปภาพที่นี่

สิ่งที่ตัวเลขนี้แสดงให้เห็นคือชุดข้อมูลที่แน่นอนเหมือนกันในทั้งสองคอลัมน์ แต่มีตัวแปรอิสระเขียนรหัสสองวิธีที่แตกต่างกัน ในคอลัมน์ด้านซ้ายเราใช้รหัสความคมชัด - นี่คือสถานการณ์จากตัวเลขแรก ในคอลัมน์ด้านขวาเราใช้รหัสจำลอง สิ่งนี้จะเปลี่ยนแปลงความหมายของการสกัดกั้น - ตอนนี้การสกัดกั้นเป็นตัวแทนของการตอบสนองที่คาดการณ์ของอาสาสมัครในกลุ่มควบคุม แผงด้านล่างแสดงให้เห็นถึงผลของการเปลี่ยนแปลงนี้คือความสัมพันธ์ของความชัน - การสกัดกั้นไม่ได้อยู่ใกล้กับ 0 อีกต่อไปแม้ว่าข้อมูลจะเหมือนกันในความหมายที่ลึกและความแปรปรวนของเงื่อนไขจะเท่ากันในทั้งสองกรณี หากสิ่งนี้ยังดูเหมือนไม่สมเหตุสมผลนักให้ศึกษาคำตอบก่อนหน้านี้ของฉันซึ่งฉันพูดคุยเกี่ยวกับปรากฏการณ์นี้มากขึ้นอาจช่วยได้

พิสูจน์

ขอให้YผมJkเป็นJตอบสนองของวันที่ผมเรื่องวันภายใต้เงื่อนไขkk(เรามีเพียงสองเงื่อนไขตรงนี้ดังนั้นkก็แค่ 1 หรือ 2) จากนั้นแบบผสมสามารถเขียนได้

YผมJk=αผม+βผมxk+อีผมJk,
ที่αผมเป็นตัวแบบ ' จุดตัดแบบสุ่มและมีความแปรปรวนσα2 , βผมเป็นอาสาสมัครลาดสุ่มและมีความแปรปรวนσβ2 , อีผมJkเป็นคำที่ผิดพลาดการสังเกตระดับและCOV(αผม,βผม)=σαβ β

เราต้องการที่จะแสดงให้เห็นว่า

var(αผม+βผมx1)=var(αผม+βผมx2)σαβ=0

เริ่มจากด้านซ้ายมือของความหมายนี้เรามี

var(αผม+βผมx1)=var(αผม+βผมx2)σα2+x12σβ2+2x1σαβ=σα2+x22σβ2+2x2σαβσβ2(x12-x22)+2σαβ(x1-x2)=0

ผลรวมการศูนย์รหัสตรงกันข้ามหมายความว่าx1+x2=0และx12=x22=x2 2 จากนั้นเราสามารถลดบรรทัดสุดท้ายของด้านบนเพื่อ

σβ2(x2x2)+2σαβ(x1+x1)=0σαβ=0,
ซึ่งเป็นสิ่งที่เราต้องการที่จะพิสูจน์ (หากต้องการกำหนดทิศทางอื่นของความหมายเราสามารถทำตามขั้นตอนเดียวกันนี้โดยย้อนกลับ)

ย้ำการแสดงนี้ว่าถ้าตัวแปรอิสระคือความคมชัด (ผลรวมเป็นศูนย์) รหัสแล้วแปรปรวนในวิชาหมายถึงการสุ่มในแต่ละสภาพมีค่าเท่ากันและถ้าหากความสัมพันธ์ระหว่างเนินเขาสุ่มและดักสุ่มเป็น 0 ที่สำคัญ ใช้เวลาอยู่ห่างออกไปจากจุดทั้งหมดนี้คือการทดสอบสมมติฐานที่σαβ=0จะทดสอบสมมติฐานความแปรปรวนเท่ากับอธิบายโดยสหกรณ์

x1=0x2=1

var(αi)=var(αi+βi)σαβ=σβ22.


นี่เป็นคำตอบที่ยอดเยี่ยมแล้วขอบคุณ! ฉันคิดว่ามันใกล้เคียงที่สุดในการตอบคำถามของฉันดังนั้นฉันจึงยอมรับและให้รางวัลแก่คุณ (กำลังจะหมดอายุ) แต่ฉันชอบที่จะเห็นเหตุผลเกี่ยวกับพีชคณิตหากคุณมีเวลาและพลังงานสำหรับมัน
Patrick S. Forscher

1
@ PatrickS.Forscher ฉันเพิ่งเพิ่มหลักฐาน
Jake Westfall

1
aa(1 | subject)dummyaa

1
ฉันเห็นแล้วว่าคุณพูดถูก @amoeba แล้วขอบคุณที่อธิบาย ฉันจะแก้ไขคำตอบของฉัน
Jake Westfall

1
@ amoeba คุณพูดถูกว่าเป็นไปได้ที่ BLUP จะออกมาสัมพันธ์กันแม้ว่าจะไม่มีพารามิเตอร์ความสัมพันธ์ในแบบจำลอง แต่ฉันเชื่อว่าสำหรับวัตถุประสงค์ในการทดสอบโพรซีเดอร์ยังคงทำงานตามที่ตั้งใจไว้ (เช่นมีอัตราข้อผิดพลาดประเภท 1 เล็กน้อย) เนื่องจากมีเพียงโมเดลที่มีพารามิเตอร์สหสัมพันธ์เท่านั้นที่สามารถรวมเข้าในฟังก์ชันโอกาสจึงจะได้รับเครดิต . นั่นคือแม้ว่า BLUPs จะออกมาสัมพันธ์กันในแบบจำลองที่เรียบง่ายขึ้น แต่มันก็ยังคงเหมือนว่าเอฟเฟ็กต์จะไม่เกี่ยวข้องกันเท่าที่มีความเป็นไปได้ทั้งหมดที่เกี่ยวข้องดังนั้นการทดสอบ LR จะทำงาน ฉันคิดว่า :)
Jake Westfall

6

คุณสามารถทดสอบความสำคัญของพารามิเตอร์โมเดลด้วยความช่วยเหลือของช่วงความเชื่อมั่นโดยประมาณสำหรับแพ็คเกจ lme4 มีconfint.merModฟังก์ชัน

bootstrapping (ดูตัวอย่างConfidence Interval จาก bootstrap )

> confint(m, method="boot", nsim=500, oldNames= FALSE)
Computing bootstrap confidence intervals ...
                                                           2.5 %     97.5 %
sd_(Intercept)|participant_id                         0.32764600 0.64763277
cor_conditionexperimental.(Intercept)|participant_id -1.00000000 1.00000000
sd_conditionexperimental|participant_id               0.02249989 0.46871800
sigma                                                 0.97933979 1.08314696
(Intercept)                                          -0.29669088 0.06169473
conditionexperimental                                 0.26539992 0.60940435 

โปรไฟล์ความน่าจะเป็น (ดูตัวอย่างเช่นความสัมพันธ์ระหว่างโอกาสในโปรไฟล์และช่วงความมั่นใจคืออะไร )

> confint(m, method="profile", oldNames= FALSE)
Computing profile confidence intervals ...
                                                          2.5 %     97.5 %
sd_(Intercept)|participant_id                         0.3490878 0.66714551
cor_conditionexperimental.(Intercept)|participant_id -1.0000000 1.00000000
sd_conditionexperimental|participant_id               0.0000000 0.49076950
sigma                                                 0.9759407 1.08217870
(Intercept)                                          -0.2999380 0.07194055
conditionexperimental                                 0.2707319 0.60727448

  • นอกจากนี้ยังมีวิธีการ'Wald'แต่จะใช้กับเอฟเฟกต์คงที่เท่านั้น

  • นอกจากนี้ยังมีอยู่ชนิดของ ANOVA (อัตราส่วน) บางชนิดในการแสดงออกในแพคเกจซึ่งมีชื่อว่าlmerTest ranovaแต่ฉันไม่สามารถเข้าใจได้จากเรื่องนี้ การกระจายของความแตกต่างใน logLikelihood เมื่อสมมติฐานว่าง (ความแปรปรวนเป็นศูนย์สำหรับผลสุ่ม) เป็นความจริงไม่ได้กระจายไคสแควร์ (อาจเป็นไปได้เมื่อจำนวนผู้เข้าร่วมและการทดลองสูงทดสอบอัตราส่วนความน่าจะเป็น


ความแปรปรวนในกลุ่มเฉพาะ

เพื่อให้ได้ผลลัพธ์สำหรับความแปรปรวนในกลุ่มเฉพาะคุณสามารถแก้ไขพารามิเตอร์

# different model with alternative parameterization (and also correlation taken out) 
fml1 <- "~ condition + (0 + control + experimental || participant_id) "

ที่เราเพิ่มสองคอลัมน์ลงใน data-frame (จำเป็นเฉพาะเมื่อคุณต้องการประเมิน 'ควบคุม' และ 'ทดลอง' ที่ไม่เกี่ยวข้องกันฟังก์ชัน(0 + condition || participant_id)จะไม่นำไปสู่การประเมินปัจจัยต่าง ๆ ที่อยู่ในสภาพที่ไม่เกี่ยวข้องกัน)

#adding extra columns for control and experimental
d <- cbind(d,as.numeric(d$condition=='control'))
d <- cbind(d,1-as.numeric(d$condition=='control'))
names(d)[c(4,5)] <- c("control","experimental")

ตอนนี้lmerจะให้ความแปรปรวนสำหรับกลุ่มที่แตกต่างกัน

> m <- lmer(paste("sim_1 ", fml1), data=d)
> m
Linear mixed model fit by REML ['lmerModLmerTest']
Formula: paste("sim_1 ", fml1)
   Data: d
REML criterion at convergence: 2408.186
Random effects:
 Groups           Name         Std.Dev.
 participant_id   control      0.4963  
 participant_id.1 experimental 0.4554  
 Residual                      1.0268  
Number of obs: 800, groups:  participant_id, 40
Fixed Effects:
          (Intercept)  conditionexperimental  
               -0.114                  0.439 

และคุณสามารถใช้วิธีการโปรไฟล์กับสิ่งเหล่านี้ เช่นตอนนี้ confint ให้ช่วงความมั่นใจสำหรับการควบคุมและความแปรปรวน exerimental

> confint(m, method="profile", oldNames= FALSE)
Computing profile confidence intervals ...
                                    2.5 %     97.5 %
sd_control|participant_id       0.3490873 0.66714568
sd_experimental|participant_id  0.3106425 0.61975534
sigma                           0.9759407 1.08217872
(Intercept)                    -0.2999382 0.07194076
conditionexperimental           0.1865125 0.69149396

ความง่าย

คุณสามารถใช้ฟังก์ชันความน่าจะเป็นเพื่อรับการเปรียบเทียบขั้นสูงมากขึ้น แต่มีหลายวิธีที่จะทำการประมาณตามถนน (เช่นคุณสามารถทำการทดสอบแบบ anova / lrt-อนุรักษ์นิยม แต่นั่นคือสิ่งที่คุณต้องการหรือไม่?)

ณ จุดนี้มันทำให้ฉันสงสัยว่าจริง ๆ แล้วประเด็นของการเปรียบเทียบระหว่างความแปรปรวน ฉันสงสัยว่ามันเริ่มซับซ้อนเกินไปหรือไม่ ทำไมความแตกต่างระหว่างผลต่างแทนอัตราส่วนระหว่างผลต่าง (ซึ่งเกี่ยวข้องกับการแจกแจงแบบ F คลาสสิก) ทำไมไม่เพียงแค่รายงานช่วงความมั่นใจ? เราจำเป็นต้องย้อนกลับไปก่อนและชี้แจงข้อมูลและเรื่องราวที่ควรจะบอกก่อนที่จะเข้าสู่เส้นทางขั้นสูงที่อาจไม่จำเป็นต้องสัมผัสกับเรื่องทางสถิติและการพิจารณาทางสถิติซึ่งเป็นหัวข้อหลักจริง ๆ

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

ตัวอย่างง่ายๆ

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

J

Y^ผม,J~ยังไม่มีข้อความ(μJ,σJ2+σε210)

σεσJJ={1,2}

คุณสามารถเห็นสิ่งนี้ในการจำลองของกราฟด้านล่างซึ่งกันสำหรับคะแนน F ตามตัวอย่างหมายความว่าคะแนน F ถูกคำนวณตามผลต่างที่ทำนาย (หรือผลรวมของข้อผิดพลาดกำลังสอง) จากแบบจำลอง

ตัวอย่างความแตกต่างในความถูกต้อง

σJ=1=σJ=2=0.5σε=1

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

σJ=1σJ=2Y^ผม,JσJσε

ตัวอย่างความแตกต่างของพลัง

σJ=1=0.5σJ=2=0.25σε=1

ดังนั้นรูปแบบตามค่าเฉลี่ยจึงมีความแม่นยำมาก แต่มันก็มีพลังน้อยกว่า สิ่งนี้แสดงให้เห็นว่ากลยุทธ์ที่ถูกต้องนั้นขึ้นอยู่กับสิ่งที่คุณต้องการ / ต้องการ

ในตัวอย่างข้างต้นเมื่อคุณตั้งค่าขอบเขตหางด้านขวาที่ 2.1 และ 3.1 คุณจะได้รับประมาณ 1% ของประชากรในกรณีที่มีความแปรปรวนเท่ากัน (การตอบสนอง 103 และ 104 จาก 10,000 คดี) แต่ในกรณีของความแปรปรวนที่ไม่เท่ากัน มาก (ให้ 5334 และ 6716 คดี)

รหัส:

set.seed(23432)

# different model with alternative parameterization (and also correlation taken out)
fml1 <- "~ condition + (0 + control + experimental || participant_id) "
fml <- "~ condition + (condition | participant_id)"

n <- 10000

theta_m <- matrix(rep(0,n*2),n)
theta_f <- matrix(rep(0,n*2),n)

# initial data frame later changed into d by adding a sixth sim_1 column
ds <- expand.grid(participant_id=1:40, trial_num=1:10)
ds <- rbind(cbind(ds, condition="control"), cbind(ds, condition="experimental"))
  #adding extra columns for control and experimental
  ds <- cbind(ds,as.numeric(ds$condition=='control'))
  ds <- cbind(ds,1-as.numeric(ds$condition=='control'))
  names(ds)[c(4,5)] <- c("control","experimental")

# defining variances for the population of individual means
stdevs <- c(0.5,0.5) # c(control,experimental)

pb <- txtProgressBar(title = "progress bar", min = 0,
                    max = n, style=3)
for (i in 1:n) {

  indv_means <- c(rep(0,40)+rnorm(40,0,stdevs[1]),rep(0.5,40)+rnorm(40,0,stdevs[2]))
  fill <- indv_means[d[,1]+d[,5]*40]+rnorm(80*10,0,sqrt(1)) #using a different way to make the data because the simulate is not creating independent data in the two groups 
  #fill <- suppressMessages(simulate(formula(fml), 
  #                     newparams=list(beta=c(0, .5), 
  #                                    theta=c(.5, 0, 0), 
  #                                    sigma=1), 
  #                     family=gaussian, 
  #                     newdata=ds))
  d <- cbind(ds, fill)
  names(d)[6] <- c("sim_1")


  m <- lmer(paste("sim_1 ", fml1), data=d)
  m
  theta_m[i,] <- m@theta^2

  imeans <- aggregate(d[, 6], list(d[,c(1)],d[,c(3)]), mean)
  theta_f[i,1] <- var(imeans[c(1:40),3])
  theta_f[i,2] <- var(imeans[c(41:80),3])

  setTxtProgressBar(pb, i)
}
close(pb)

p1 <- hist(theta_f[,1]/theta_f[,2], breaks = seq(0,6,0.06))       
fr <- theta_m[,1]/theta_m[,2]
fr <- fr[which(fr<30)]
p2 <- hist(fr, breaks = seq(0,30,0.06))



plot(-100,-100, xlim=c(0,6), ylim=c(0,800), 
     xlab="F-score", ylab = "counts [n out of 10 000]")
plot( p1, col=rgb(0,0,1,1/4), xlim=c(0,6), ylim=c(0,800), add=T)  # means based F-score
plot( p2, col=rgb(1,0,0,1/4), xlim=c(0,6), ylim=c(0,800), add=T)  # model based F-score
fr <- seq(0, 4, 0.01)
lines(fr,df(fr,39,39)*n*0.06,col=1)
legend(2, 800, c("means based F-score","mixed regression based F-score"), 
       fill=c(rgb(0,0,1,1/4),rgb(1,0,0,1/4)),box.col =NA, bg = NA)
legend(2, 760, c("F(39,39) distribution"), 
       lty=c(1),box.col = NA,bg = NA)
title(expression(paste(sigma[1]==0.5, " , ", sigma[2]==0.5, " and ", sigma[epsilon]==1)))

มีประโยชน์ แต่ดูเหมือนจะไม่ได้ตอบคำถามเกี่ยวกับวิธีเปรียบเทียบความแปรปรวนในสองเงื่อนไข
อะมีบาพูดว่า Reinstate Monica

@ amoeba ฉันพบว่าคำตอบนี้ให้แก่นแท้ของปัญหา (เกี่ยวกับการทดสอบส่วนประกอบความแปรปรวนแบบสุ่ม) สิ่งที่ OP ต้องการอย่างแม่นยำนั้นอ่านได้ยากในเนื้อหาทั้งหมด "ความแตกต่างของการสกัดกั้นแบบสุ่ม" หมายถึงอะไร (พหูพจน์ที่เกี่ยวข้องกับการสกัดกั้นทำให้ฉันสับสน) กรณีที่เป็นไปได้หนึ่งอาจจะใช้แบบจำลองsim_1 ~ condition + (0 + condition | participant_id)"ในกรณีที่คุณได้รับการแปรสภาพเป็นสองพารามิเตอร์ (หนึ่งสำหรับแต่ละกลุ่ม) มากกว่าสองพารามิเตอร์หนึ่งสำหรับการสกัดกั้นและหนึ่งสำหรับผลกระทบ (ซึ่ง ต้องรวมกันเป็นกลุ่ม)
Sextus Empiricus

แต่ละวิชามีการตอบสนองโดยเฉลี่ยในเงื่อนไข A และการตอบสนองโดยเฉลี่ยในเงื่อนไข B คำถามคือว่าความแปรปรวนของวิชาใน A แตกต่างจากความแปรปรวนข้ามวิชาใน B หรือไม่
อะมีบากล่าวว่า Reinstate Monica

สิ่งนี้ไม่สามารถทำงานที่โพสต์ในชื่อเรื่อง "เปรียบเทียบส่วนประกอบความแปรปรวนแบบสุ่มข้ามระดับของตัวแปรการจัดกลุ่ม" ฉันสังเกตเห็นว่ามีการพิมพ์ผิดในเนื้อความของคำถามซึ่งฉันได้แก้ไข ฉันพยายามอธิบายถ้อยคำของคำถามให้ชัดเจนขึ้น
Patrick S. Forscher

อาจเป็นไปได้ที่จะตอบคำถามโดยใช้car::linearHypothesisTest( math.furman.edu/~dcs/courses/math47/R/library/car/html/… ) ซึ่งช่วยให้ผู้ใช้สามารถทดสอบสมมุติฐานแบบจำลองที่ติดตั้งไว้ อย่างไรก็ตามฉันต้องใช้วิธีการของ @ amoeba เพื่อรับการสกัดกั้นแบบสุ่มทั้งสองรุ่นในรุ่นที่ติดตั้งแบบเดียวกันเพื่อให้สามารถเปรียบเทียบกับฟังก์ชันนี้ได้ ฉันยังไม่แน่ใจเล็กน้อยเกี่ยวกับความถูกต้องของวิธีการ
Patrick S. Forscher

5

วิธีการหนึ่งที่ค่อนข้างตรงไปข้างหน้าอาจจะใช้การทดสอบความน่าจะเป็นอัตราส่วนผ่านทางanovaตามที่อธิบายไว้ในคำถามที่พบบ่อยlme4

เราเริ่มต้นด้วยแบบจำลองเต็มรูปแบบที่ไม่จำกัดความแปรปรวน (เช่นอนุญาตให้มีความแปรปรวนสองแบบที่แตกต่างกัน) จากนั้นให้พอดีกับแบบจำลองที่มีข้อ จำกัด หนึ่งแบบซึ่งความแปรปรวนทั้งสองจะถือว่าเท่ากัน เราก็เปรียบเทียบกับanova()(ทราบว่าผมตั้งREML = FALSEแม้จะREML = TRUEมีanova(..., refit = FALSE)ความเป็นไปได้อย่างสมบูรณ์ )

m_full <- lmer(sim_1 ~ condition + (condition | participant_id), data=d, REML = FALSE)
summary(m_full)$varcor
 # Groups         Name                  Std.Dev. Corr  
 # participant_id (Intercept)           0.48741        
 #                conditionexperimental 0.26468  -0.419
 # Residual                             1.02677     

m_red <- lmer(sim_1 ~ condition + (1 | participant_id), data=d, REML = FALSE)
summary(m_red)$varcor
 # Groups         Name        Std.Dev.
 # participant_id (Intercept) 0.44734 
 # Residual                   1.03571 

anova(m_full, m_red)
# Data: d
# Models:
# m_red: sim_1 ~ condition + (1 | participant_id)
# m_full: sim_1 ~ condition + (condition | participant_id)
#        Df    AIC    BIC  logLik deviance  Chisq Chi Df Pr(>Chisq)
# m_red   4 2396.6 2415.3 -1194.3   2388.6                         
# m_full  6 2398.7 2426.8 -1193.3   2386.7 1.9037      2      0.386

อย่างไรก็ตามการทดสอบนี้มีแนวโน้มที่จะอนุรักษ์นิยม ตัวอย่างเช่นคำถามที่พบบ่อยพูดว่า:

โปรดทราบว่าการทดสอบสมมติฐานสมมุติฐานว่างของ LRT นั้นใช้ความระมัดระวังเมื่อค่า Null (เช่นσ2 = 0) อยู่ในขอบเขตของพื้นที่ที่เป็นไปได้ ในกรณีที่ง่ายที่สุด (ความแปรปรวนของเอฟเฟกต์แบบสุ่มเดียว) ค่า p มีค่าประมาณสองเท่าใหญ่เท่าที่ควร (Pinheiro และ Bates 2000)

มีหลายทางเลือก:

  1. χ2

  2. จำลองการแจกแจงที่ถูกต้องโดยใช้RLRsim(ตามที่อธิบายไว้ในคำถามที่พบบ่อย)

ฉันจะสาธิตตัวเลือกที่สองในรายการต่อไปนี้:

library("RLRsim")
## reparametrize model so we can get one parameter that we want to be zero:
afex::set_sum_contrasts() ## warning, changes contrasts globally
d <- cbind(d, difference = model.matrix(~condition, d)[,"condition1"])

m_full2 <- lmer(sim_1 ~ condition + (difference | participant_id), data=d, REML = FALSE)
all.equal(deviance(m_full), deviance(m_full2))  ## both full models are identical

## however, we need the full model without correlation!
m_full2b <- lmer(sim_1 ~ condition + (1| participant_id) + 
                   (0 + difference | participant_id), data=d, REML = FALSE)
summary(m_full2b)$varcor
 # Groups           Name        Std.Dev.
 # participant_id   (Intercept) 0.44837 
 # participant_id.1 difference  0.13234 
 # Residual                     1.02677 

## model that only has random effect to be tested
m_red <- update(m_full2b,  . ~ . - (1 | participant_id), data=d, REML = FALSE)
summary(m_red)$varcor
 # Groups         Name       Std.Dev.
 # participant_id difference 0.083262
 # Residual                  1.125116

## Null model 
m_null <- update(m_full2b,  . ~ . - (0 + difference | participant_id), data=d, REML = FALSE)
summary(m_null)$varcor
 # Groups         Name        Std.Dev.
 # participant_id (Intercept) 0.44734 
 # Residual                   1.03571 

exactRLRT(m_red, m_full2b, m_null)
# Using restricted likelihood evaluated at ML estimators.
# Refit with method="REML" for exact results.
# 
#   simulated finite sample distribution of RLRT.
#   
#   (p-value based on 10000 simulated values)
# 
# data:  
# RLRT = 1.9698, p-value = 0.0719

ดังที่เราเห็นผลลัพธ์ที่ได้แสดงว่าREML = TRUEเราจะได้ผลลัพธ์ที่แน่นอน แต่นี่เป็นแบบฝึกหัดสำหรับผู้อ่าน

เกี่ยวกับโบนัสนั้นฉันไม่แน่ใจว่าRLRsimอนุญาตให้ทำการทดสอบส่วนประกอบหลาย ๆ ชิ้นพร้อมกันหรือไม่แต่ถ้าเป็นเช่นนั้นสามารถทำได้ในลักษณะเดียวกัน


การตอบสนองต่อความคิดเห็น:

θXθ0X

ฉันไม่แน่ใจว่าคำถามนี้จะได้รับคำตอบที่สมเหตุสมผล

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

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

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


1
คุณใช้ความแตกต่างของการรักษา ( contr.treatment) ซึ่งเงื่อนไขการควบคุมคือการอ้างอิง (กล่าวคือซึ่งมีการคำนวณการสกัดกั้นแบบสุ่ม) การ parametrization ที่ฉันเสนอฉันใช้ผลต่างความขัดแย้ง (เช่น, contr.sum) และการสกัดกั้นคือค่าเฉลี่ยยิ่งใหญ่ ฉันรู้สึกว่ามันสมเหตุสมผลกว่าที่จะทดสอบว่าความแตกต่างนั้นเป็นโมฆะเมื่อการสกัดกั้นเป็นค่าเฉลี่ยที่ยิ่งใหญ่แทนที่จะเป็นเงื่อนไขการควบคุม (แต่การเขียนเสร็จแล้วแสดงว่ามันอาจไม่สำคัญเลย คุณอาจต้องการอ่าน pp 24 ถึง 26 จาก: singmann.org/download/publications/…
Henrik

1
ขอบคุณ! คำถามของฉันแตกต่างกันเล็กน้อย: (1) คำตอบของคุณดูเหมือนจะบอกเป็นนัยว่าคำถามของฉันลดลงเป็น "เป็นความชันแบบสุ่มสำหรับเงื่อนไขที่แตกต่างจาก 0" มันเป็นเรื่องจริงเหรอ? (2) ถ้าคำตอบนี้ (1) คือ "ใช่" นี้แสดงให้เห็นความหมายของความลาดชันสุ่มอีกcondition: conditionจะช่วยให้ตัดแบบสุ่มไปยังแตกต่างกันในระดับของ มันเป็นเรื่องจริงเหรอ?
Patrick S. Forscher

2
2 ¢ของฉัน: @amoeba ตัวอย่างของขั้นตอนที่เสนอของ Henrik ถูกต้อง เฮนริกเกือบจะถูกต้อง แต่เขาเปรียบเทียบรุ่นที่ไม่ถูกต้อง การเปรียบเทียบรูปแบบที่คำถามคำตอบของแพทริคคือการเปรียบเทียบระหว่างรูปแบบเฮนริกเรียกว่าเทียบกับm_full m_full2bนั่นคือผลต่างของผู้เข้าร่วมการตอบสนองหมายถึงเงื่อนไขในการเทียบกับ B มีไม่เท่ากันIFFสุ่มสัมพันธ์ตัดลาดไม่ใช่ศูนย์ --- ที่สำคัญภายใต้ทุนการศูนย์ความคมชัดเข้ารหัส parameterization การทดสอบความแปรปรวนแบบสุ่มนั้นไม่จำเป็น พยายามคิดว่าจะอธิบายเรื่องนี้อย่างไรให้กระชับ ...
Jake Westfall

2
นี่ไม่ใช่คำอธิบายที่เหมาะสมจริงๆ แต่การศึกษาคำตอบของฉันที่นี่อาจทำให้เข้าใจถึงเรื่องเล็กน้อย โดยพื้นฐานแล้วพารามิเตอร์ความสัมพันธ์จะควบคุมว่าเส้นการถดถอยของผู้เข้าร่วม "ปัดไปทางขวา" (บวกเชิงบวก) หรือ "พัดออกไปทางซ้าย" (ลบสัมพันธ์) ความแปรปรวนไม่เท่ากันอย่างใดอย่างหนึ่งเหล่านี้บ่งบอกถึงการตอบสนองต่อค่าเฉลี่ยตามเงื่อนไขของผู้เข้าร่วม การเข้ารหัส Sum-to-zero จากนั้นตรวจสอบให้แน่ใจว่าเรากำลังมองหาความสัมพันธ์ในจุดที่เหมาะสมใน X
Jake Westfall

2
ผมจะพิจารณาการโพสต์คำตอบกับภาพถ้าฉันสามารถหาเวลา ...
เจคเวสท์

5

โมเดลของคุณ

m = lmer(sim_1 ~ condition + (condition | participant_id), data=d)

แล้วช่วยให้ความแปรปรวนข้ามเรื่องในสภาพควบคุมแตกต่างจากความแปรปรวนข้ามเรื่องในสภาพการทดลอง สิ่งนี้สามารถทำให้ชัดเจนยิ่งขึ้นโดย parametrization ที่เทียบเท่า:

m = lmer(sim_1 ~ 0 + condition + (0 + condition | participant_id), data=d)

เมทริกซ์ความแปรปรวนร่วมแบบสุ่มในขณะนี้มีการตีความที่ง่ายขึ้น:

Random effects:
 Groups         Name                  Variance Std.Dev. Corr
 participant_id conditioncontrol      0.2464   0.4963       
                conditionexperimental 0.2074   0.4554   0.83

ที่นี่ความแปรปรวนสองแบบนั้นเป็นความแปรปรวนสองแบบที่คุณสนใจอย่างแม่นยำ:ความแปรปรวนแบบข้ามเงื่อนไขของการตอบสนองแบบมีเงื่อนไขในเงื่อนไขการควบคุมและแบบเดียวกันในเงื่อนไขการทดลอง ในชุดข้อมูลจำลองของคุณคือ 0.25 และ 0.21 ความแตกต่างได้รับจาก

delta = as.data.frame(VarCorr(m))[1,4] - as.data.frame(VarCorr(m))[2,4]

และเท่ากับ 0.039 คุณต้องการทดสอบว่ามันแตกต่างจากศูนย์หรือไม่

แก้ไข:ฉันตระหนักว่าการทดสอบการเปลี่ยนแปลงที่ฉันอธิบายด้านล่างไม่ถูกต้อง; มันจะไม่ทำงานตามที่ตั้งใจไว้หากวิธีการในการควบคุม / เงื่อนไขการทดลองไม่เหมือนกัน (เพราะการสังเกตนั้นไม่สามารถแลกเปลี่ยนได้ภายใต้ค่า null) มันอาจจะเป็นความคิดที่ดีให้กับอาสาสมัครบูต (หรือวิชา / รายการในกรณีโบนัส) deltaและได้รับความเชื่อมั่นสำหรับ

ฉันจะพยายามแก้ไขรหัสด้านล่างเพื่อทำเช่นนั้น


ข้อเสนอแนะที่ยึดตามการเปลี่ยนแปลงเดิม (ผิด)

ฉันมักจะพบว่ามีใครสามารถช่วยตัวเองให้เดือดร้อนมากมายด้วยการทำแบบทดสอบการเปลี่ยนรูป แน่นอนในกรณีนี้มันง่ายมากที่จะติดตั้ง มาควบคุมการเปลี่ยนแปลงเงื่อนไข / การทดลองสำหรับแต่ละวิชาแยกกัน ดังนั้นความแตกต่างในผลต่างใดควรถูกกำจัด การทำซ้ำหลาย ๆ ครั้งนี้จะให้ผลเป็นศูนย์สำหรับความแตกต่าง

(ฉันไม่ได้เขียนโปรแกรมใน R ทุกคนโปรดเขียนสิ่งต่อไปนี้ในรูปแบบ R ที่ดีกว่า)

set.seed(42)
nrep = 100
v = matrix(nrow=nrep, ncol=1)
for (i in 1:nrep)
{
   dp = d
   for (s in unique(d$participant_id)){             
     if (rbinom(1,1,.5)==1){
       dp[p$participant_id==s & d$condition=='control',]$condition = 'experimental'
       dp[p$participant_id==s & d$condition=='experimental',]$condition = 'control'
     }
   }
  m <- lmer(sim_1 ~ 0 + condition + (0 + condition | participant_id), data=dp)
  v[i,] = as.data.frame(VarCorr(m))[1,4] - as.data.frame(VarCorr(m))[2,4]
}
pvalue = sum(abs(v) >= abs(delta)) / nrep

พี=0.7nrep

ตรรกะเดียวกันนี้สามารถนำไปใช้กับโบนัสได้


น่าสนใจสุด ๆ ขอบคุณ! ฉันจะต้องคิดให้มากขึ้นเกี่ยวกับสาเหตุที่การแก้ไขพารามิเตอร์ใหม่ของคุณทำงานเพราะนี่เป็นข้อมูลเชิงลึกที่สำคัญของคำตอบนี้
Patrick S. Forscher

น่าแปลกที่ค่าดักต่อกลุ่มในคำตอบของคุณดูเหมือนจะแตกต่างจากคำตอบใน @MartijnWeterings
Patrick S. Forscher

@ PatrickS.Forscher นั่นเป็นเพราะเขาฉันคิดว่าสร้างชุดข้อมูลที่แตกต่างกัน ฉันสามารถใช้sim_1 ~ 0 + condition + (0 + dummy(condition, "control") + dummy(condition, "experimental") | participant_id)สูตรและได้ผลลัพธ์เดียวกันกับคำตอบของฉัน
อะมีบาพูดว่า Reinstate Monica

1
@ PatrickS.Forscher ไม่ฉันใช้ข้อมูลที่สร้างโดยรหัสของคุณ (กับเมล็ดของคุณ) ฉันตั้งค่าเมล็ดเป็น 42 เฉพาะเมื่อทำการทดสอบการเปลี่ยนรูป มันคือ Martijn ที่เปลี่ยนชุดข้อมูลไม่ใช่ฉัน
อะมีบาพูดว่า Reinstate Monica

1
ข้อเสนอนี้เป็นที่แน่นอน อย่างที่ฉันคิดว่าคุณเคยมีประสบการณ์มาแล้วการตั้งค่าการทดสอบการเปลี่ยนแปลงของข้อมูลหลายระดับนั้นไม่ได้ตรงไปตรงมาทั้งหมด วิธีการที่คล้ายกันซึ่งง่ายต่อการใช้งานเล็กน้อยคือ parametric bootstrapping ซึ่งค่อนข้างง่ายในการใช้ lme4 โดยใช้วิธีการจำลอง () ของวัตถุที่ติดตั้ง lmer เช่นเรียกการจำลอง (m) หลาย ๆ ครั้งเพื่อสร้าง bootstrap การกระจาย เพียงความคิดที่จะเล่นกับ
Jake Westfall

0

YผมJk=μ+αJ+dผมJ+อีผมJk,dผม~ยังไม่มีข้อความ(0,Σ),อีผมJk~ยังไม่มีข้อความ(0,σ2)
αJJdผม=(dผม1,...,dผมJ)ผมJ
Yผม1kYผม2kABdผม

Σ=[σA2σABσABσB2]

σA2σB2

Σ

ความแปรปรวนของการสกัดกั้นซึ่งสอดคล้องกับค่าเฉลี่ยยิ่งใหญ่คือ

σ12=วาร์ (แกรนด์เฉลี่ย)=var(12(A+B))=14(var(A)+var(B)+2Cov(A,B)).

ความแปรปรวนของความคมชัดคือ

σ22=Var (คมชัด)=var(12(A-B))=14(var(A)+var(B)-2Cov(A,B)).

และความแปรปรวนร่วมระหว่างจุดตัดกับความคมชัดคือ

σ12=Cov(แกรนด์หมายถึงความคมชัด)=Cov(12(A+B),12(A-B))=14(var(A)-var(B)).

Σ

Σ=[σ12+σ22+2σ12σ12-σ22σ12-σ22σ12+σ22-2σ12]=[σA2σABσABσB2].

Σ

Σ=[σ12σ12σ12σ12]+[σ22-σ22-σ22σ22]+2[σ1200-σ12].

σ12

Σ=[σ12σ12σ12σ12]+[σ22-σ22-σ22σ22]=[σ12+σ22σ12-σ22σ12-σ22σ12+σ22]

ซึ่งตามที่ @ Jake Westfall ได้รับแตกต่างกันเล็กน้อยทดสอบสมมติฐานของความแปรปรวนที่เท่ากันเมื่อเราเปรียบเทียบแบบจำลองโดยไม่มีพารามิเตอร์ความแปรปรวนร่วมนี้กับแบบจำลองที่พารามิเตอร์ความแปรปรวนร่วมยังคงรวมอยู่ / ไม่ได้ตั้งค่าเป็นศูนย์

โดยเฉพาะอย่างยิ่งการแนะนำการจัดกลุ่มแบบข้ามปัจจัยอื่น (เช่นสิ่งเร้า) จะไม่เปลี่ยนแปลงการเปรียบเทียบแบบจำลองที่ต้องทำคือanova(mod1, mod2)(ทางเลือกกับอาร์กิวเมนต์refit = FALSEเมื่อคุณใช้การประมาณ REML) โดยที่mod1และmod2ถูกกำหนดเป็น @Jake Westfall

σ12σ22

Σ=[σ12σ12σ12σ12]

ซึ่งทดสอบสมมติฐานว่าความแปรปรวนในสองเงื่อนไขมีค่าเท่ากันและมีค่าเท่ากับความแปรปรวนร่วม (บวก) ระหว่างสองเงื่อนไข


เมื่อเรามีสองเงื่อนไขโมเดลที่เหมาะกับเมทริกซ์ความแปรปรวนร่วมกับพารามิเตอร์สองตัวในโครงสร้างสมมาตรผสม (บวก) ยังสามารถเขียนเป็น

# code snippet from Jake Westfall
d$contrast <- 2*(d$condition == 'experimental') - 1

# new model
mod3 <- lmer(sim_1 ~ contrast + (1 | participant_id) + (1 | contrast:participant_id), 
             data = d, REML = FALSE) 

หรือ (ใช้ตัวแปร / ปัจจัยเด็ดขาดcondition)

mod4 <- lmer(sim_1 ~ condition + (1 | participant_id) + (1 | condition:participant_id), 
             data = d, REML = FALSE)

กับ

Σ=[σ12+σ22σ12σ12σ12+σ22]=[σ12σ12σ12σ12]+[σ2200σ22]

σ12σ22Σ

ด้านล่างเราจะเห็นว่าmod1, mod3และmod4ผลผลิตพอดีเทียบเท่า:

# code snippet from Jake Westfall
d$contrast <- 2*(d$condition == 'experimental') - 1

mod1 <- lmer(sim_1 ~ contrast + (contrast || participant_id),
             data = d, REML = FALSE)

mod2 <- lmer(sim_1 ~ contrast + (contrast | participant_id),
             data = d, REML = FALSE)

# new models 
mod3 <- lmer(sim_1 ~ contrast + (1 | participant_id) + (1 | contrast:participant_id), 
             data = d, REML = FALSE) 

mod4 <- lmer(sim_1 ~ condition + (1 | participant_id) + (1 | condition:participant_id), 
             data = d, REML = FALSE)

anova(mod3, mod1)
# Data: d
# Models:
# mod3: sim_1 ~ contrast + (1 | participant_id) + (1 | contrast:participant_id)
# mod1: sim_1 ~ contrast + ((1 | participant_id) + (0 + contrast | participant_id))
#      Df    AIC    BIC  logLik deviance Chisq Chi Df Pr(>Chisq)
# mod3  5 2396.9 2420.3 -1193.5   2386.9                        
# mod1  5 2396.9 2420.3 -1193.5   2386.9     0      0          1

anova(mod4, mod3)
# Data: d
# Models:
# mod4: sim_1 ~ condition + (1 | participant_id) + (1 | condition:participant_id)
# mod3: sim_1 ~ contrast + (1 | participant_id) + (1 | contrast:participant_id)
#      Df    AIC    BIC  logLik deviance Chisq Chi Df Pr(>Chisq)
# mod4  5 2396.9 2420.3 -1193.5   2386.9                        
# mod3  5 2396.9 2420.3 -1193.5   2386.9     0      0          1

Σ

Σ=[σ12σ12+σ12σ12+σ12σ12+σ22+2σ12]=[σ12σ12σ12σ12]+[000σ22]+[0σ12σ122σ12]

σ12Aσ22A-Bσ12

σ12σ22

mod4Σ

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