การคำนวณขนาดตัวอย่างสำหรับการถดถอยโลจิสติกแบบหลายตัวแปร


11

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

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

ความคิดใด ๆ การนำ R ไปใช้ใด ๆ


คุณคาดว่าจะมีการออกกลางคันระหว่างการติดตาม? มีโควาเรียอื่น ๆ ที่จะรวมอยู่ในแบบจำลองของคุณหรือไม่?
chl

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

ตกลง แต่โดยปกติแล้วจะเป็น% dropout ที่คาดไว้จำนวน covariates และการวัด covariates มีข้อผิดพลาด (ดูเช่นj.mp/9fJkhb ) ป้อนสูตร (ในทุกกรณีมันจะเพิ่มขนาดตัวอย่าง)
chl

คำตอบ:


7

การคำนวณขนาดตัวอย่างสำหรับการถดถอยโลจิสติกมีความซับซ้อน ฉันจะไม่พยายามสรุปที่นี่ วิธีแก้ปัญหาที่สามารถเข้าถึงได้อย่างเหมาะสมสำหรับปัญหานี้พบได้ใน:

Hsieh FY ตารางขนาดตัวอย่างสำหรับการถดถอยโลจิสติก สถิติทางการแพทย์ 1989 ก.ค. ; 8 (7): 795-802

Hsieh FY, et al. วิธีการง่ายๆในการคำนวณขนาดตัวอย่างสำหรับการถดถอยเชิงเส้นและโลจิสติก สถิติทางการแพทย์ 1998 ก.ค. 30; 17 (14): 1623-34

การสนทนาที่สามารถเข้าถึงได้ในประเด็นที่มีการคำนวณตัวอย่างเช่นสามารถพบได้ในบทสุดท้าย (มาตรา 8.5 pp ได้ 339-347) ของฮอสเมอร์ & Lemeshow ของการประยุกต์ใช้การถดถอยโลจิสติก


7

ฉันมักจะพบว่าง่ายกว่าและเร็วกว่าในการรันการจำลอง บทความใช้เวลาในการอ่านทำความเข้าใจและในที่สุดก็มาถึงข้อสรุปว่าพวกเขาไม่ได้ใช้ในกรณีพิเศษที่มีคนสนใจ

ดังนั้นฉันจะเลือกจำนวนวิชาจำลอง covariate ที่คุณสนใจ (กระจายตามที่คุณเชื่อว่ามันจะเป็น), จำลองผลลัพธ์ที่ดี / ไม่ดีขึ้นอยู่กับแบบฟอร์มการทำงานที่คุณวาง (ผลกระทบเกณฑ์ของ covariate? nonlinearity?) ด้วยขนาดของเอฟเฟกต์ที่มีนัยสำคัญต่ำสุด (ทางคลินิก) ที่คุณต้องการตรวจจับเรียกใช้ผลลัพธ์ผ่านการวิเคราะห์ของคุณและดูว่าพบเอฟเฟกต์ที่อัลฟาของคุณหรือไม่ เรียกใช้อีก 10,000 ครั้งและดูว่าคุณพบเอฟเฟกต์แบบจำลอง 80% หรือไม่หรือกำลังอื่น ๆ ที่คุณต้องการ ปรับจำนวนของอาสาสมัครทำซ้ำจนกว่าคุณจะมีพลังที่คุณมีความสุข

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


คุณมีกรณีทำงานใน R หรือไม่?
Farrel

1
@Farrel - นี่เป็นสคริปต์ที่สั้นมากซึ่งถือว่า [0,1] - โควาเรียต์ที่กระจายแบบไม่สม่ำเสมอหรือ OR ของ 2 ระหว่างควอไทล์ที่หนึ่งและสามของโควาเรียตและเสียงรบกวนมาตรฐานทั่วไปนำไปสู่พลัง. 34 สำหรับ n = 100 ฉันเล่นกับสิ่งนี้เพื่อดูว่าทุกอย่างมีความละเอียดอ่อนต่อข้อสันนิษฐานของฉัน: วิ่ง <- 1,000; nn <- 100; set.seed (2010); การตรวจจับ <- ทำซ้ำ (n = run, expr = {covariate <- runif (nn); ผลลัพธ์ <- runif (nn) <1 / (1 + exp (-2 * log (2) * covariate + rnorm (nn)) ); summary (glm (result ~ covariate, family = "binomial")) $ สัมประสิทธิ์ ["covariate", "Pr (> | z |)"] <.05} แมว ("Power:", sum (การตรวจจับ) / ทำงาน, "\ n")
Stephan Kolassa

1
คุณสามารถแนบรหัสของคุณเป็น pastie ( pastebin.com ) หรือ Gist ( gist.github.com ) หากคุณรู้สึกว่าสะดวกกว่าและลิงก์กลับไปที่ความคิดเห็นของคุณ
chl

@chl: +1 ขอบคุณมาก! นี่คือส่วนสำคัญ: gist.github.com/607968
Stephan Kolassa

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

4

ติดตามจากโพสต์โดย Stephan Kolassa (ฉันไม่สามารถเพิ่มสิ่งนี้เป็นความคิดเห็น) ฉันมีรหัสทางเลือกสำหรับการจำลอง สิ่งนี้ใช้โครงสร้างพื้นฐานเดียวกัน แต่มีการระเบิดเพิ่มขึ้นอีกเล็กน้อยดังนั้นจึงอาจอ่านง่ายขึ้นเล็กน้อย นอกจากนี้ยังขึ้นอยู่กับรหัสโดยKleinman และ Hortonเพื่อจำลองการถดถอยโลจิสติก

nn คือตัวเลขในตัวอย่าง covariate ควรกระจายอย่างต่อเนื่องตามปกติและมาตรฐานเป็นค่าเฉลี่ย 0 และ sd 1 เราใช้ rnorm (nn) เพื่อสร้างสิ่งนี้ เราเลือกอัตราส่วนอัตราต่อรองและเก็บไว้ในอัตราต่อรอง นอกจากนี้เรายังเลือกหมายเลขสำหรับการสกัดกั้น ตัวเลือกของหมายเลขนี้ควบคุมสัดส่วนของตัวอย่างประสบการณ์ "เหตุการณ์" (เช่น 0.1, 0.4, 0.5) คุณต้องเล่นกับหมายเลขนี้จนกว่าคุณจะได้สัดส่วนที่ถูกต้อง รหัสต่อไปนี้จะให้สัดส่วน 0.1 กับขนาดตัวอย่าง 950 และ OR ของ 1.5:

nn <- 950
runs <- 10000
intercept <- log(9)
odds.ratio <- 1.5
beta <- log(odds.ratio)
proportion  <-  replicate(
              n = runs,
              expr = {
                  xtest <- rnorm(nn)
                  linpred <- intercept + (xtest * beta)
                  prob <- exp(linpred)/(1 + exp(linpred))
                  runis <- runif(length(xtest),0,1)
                  ytest <- ifelse(runis < prob,1,0)
                  prop <- length(which(ytest <= 0.5))/length(ytest)
                  }
            )
summary(proportion)

สรุป (สัดส่วน) ยืนยันว่าสัดส่วนเป็น ~ 0.1

จากนั้นใช้ตัวแปรเดียวกันกำลังจะถูกคำนวณมากกว่า 10,000 ครั้ง:

result <-  replicate(
              n = runs,
              expr = {
                  xtest <- rnorm(nn)
                  linpred <- intercept + (xtest * beta)
                  prob <- exp(linpred)/(1 + exp(linpred))
                  runis <- runif(length(xtest),0,1)
                  ytest <- ifelse(runis < prob,1,0)
                  summary(model <- glm(ytest ~ xtest,  family = "binomial"))$coefficients[2,4] < .05
                  }
            )
print(sum(result)/runs)

ฉันคิดว่ารหัสนี้ถูกต้อง - ฉันตรวจสอบกับตัวอย่างที่ให้ไว้ใน Hsieh, 1998 (ตารางที่ 2) และดูเหมือนว่าจะเห็นด้วยกับสามตัวอย่างที่ให้ไว้ที่นั่น ฉันยังทดสอบกับตัวอย่างใน p 342 - 343 ของ Hosmer และ Lemeshow ซึ่งพบพลัง 0.75 (เทียบกับ 0.8 ใน Hosmer และ Lemeshow) ดังนั้นอาจเป็นไปได้ว่าในบางสถานการณ์วิธีการนี้จะประเมินพลังงานต่ำกว่าที่ควร อย่างไรก็ตามเมื่อฉันเรียกใช้ตัวอย่างเดียวกันในเครื่องคิดเลขออนไลน์ฉันพบว่ามันเห็นด้วยกับฉันและไม่ใช่ผลลัพธ์ใน Hosmer และ Lemeshow

หากใครสามารถบอกเราได้ว่าเหตุใดในกรณีนี้ฉันสนใจที่จะรู้


ฉันมีคำถาม 2 ข้อถ้าคุณไม่รังเกียจ 1) ฟังก์ชั่นสัดส่วนเพียงเพื่อให้การตัดถูกต้องหรือไม่? 2) อะไรคือตรรกะที่อยู่เบื้องหลังการใช้ ytest (เปรียบเทียบ prob กับการสุ่มจับ uni)?
B_Miner

@B_Miner 1) วิธีอื่น ๆ - เพื่อให้ได้สัดส่วนอย่างถูกต้องคุณต้องตั้งจุดตัดอย่างถูกต้อง - ดังนั้นปรับจุดตัดแกนจนกว่าคุณจะได้สัดส่วนตามที่คุณคาดหวัง 2) ตรรกะของ ytest คือเราต้องได้ผลลัพธ์เป็น dichotomous 0 หรือ 1 ดังนั้นเราจึงเปรียบเทียบแต่ละตัวอย่างจากการแจกแจงแบบเดียวกันกับความน่าจะเป็น (prob) เพื่อให้ได้ผลลัพธ์ที่มีขั้วคู่ของเรา 'runis' ไม่จำเป็นต้องดึงมาจากการแจกชุดแบบสุ่ม - การแจกแจงแบบทวินามหรือแบบอื่นอาจเหมาะสมสำหรับข้อมูลของคุณ หวังว่านี่จะช่วยได้ (ขออภัยสำหรับความล่าช้าในการตอบกลับ)
Andrew

3

คำถามง่ายๆเกี่ยวกับขนาดตัวอย่างคือขนาดตัวอย่างที่ต้องการเพื่อให้ได้ช่วงความมั่นใจ 95% ไม่เกิน 2d สำหรับค่าเฉลี่ย [ไม่ทราบ] ของการกระจายข้อมูล ตัวแปรอื่นคือวิธีตัวอย่างที่มีขนาดใหญ่เป็นสิ่งจำเป็นที่จะมีอำนาจที่ 0.9เมื่อการทดสอบ H0 คุณดูเหมือนจะไม่ระบุเกณฑ์ใด ๆ สำหรับการเลือกขนาดตัวอย่าง0 : θ = 0θ=10:θ=0

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

farrel: ฉันกำลังเพิ่มสิ่งนี้ในการตอบกลับความคิดเห็นของคุณ

เพื่อให้ได้ขนาดตัวอย่างเรามักจะระบุเกณฑ์ความแม่นยำบางประเภทสำหรับการประเมิน [เช่นความยาวของ CI] หรือกำลังไฟฟ้าที่ทางเลือกที่ระบุของการทดสอบที่จะดำเนินการกับข้อมูล คุณดูเหมือนจะกล่าวถึงเกณฑ์ทั้งสองนี้ โดยหลักการแล้วคุณจะต้องทำการคำนวณขนาดตัวอย่างสองครั้งเพื่อให้ได้ความแม่นยำในการประมาณค่าที่ต้องการและอีกอันหนึ่งเพื่อให้ได้พลังงานตามที่ต้องการ ดังนั้นขนาดตัวอย่างที่ใหญ่กว่าของทั้งสองคือสิ่งที่จำเป็น [btw - นอกเหนือจากการบอกว่าใช้พลังงาน 80% - คุณดูเหมือนจะไม่ได้กล่าวถึงสิ่งที่คุณวางแผนจะทำการทดสอบ - หรือทางเลือกที่คุณต้องการพลังงาน 80%]

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


เกณฑ์จะเป็นความแตกต่าง 10% ในความน่าจะเป็นของดีและไม่ดี หรือสมมุติว่ามันจะเป็นการถดถอยโลจิสติกอัตราต่อรอง = 2 อัลฟา = 0.05 กำลัง = 80% ฉันยังไม่รู้ว่าความแปรปรวนรวมของตัวแปรต่อเนื่องคืออะไร แต่ขอให้เราสมมติว่าความเบี่ยงเบนมาตรฐานคือ 7mmHg การวิเคราะห์ตามลำดับจะดี แต่ผลลัพธ์สุดท้ายคือสองปีหลังจากการวัด
Farrel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.