ฉันกำลังมองหาโปรแกรม (ใน R หรือ SAS หรือสแตนด์อะโลนถ้าฟรีหรือต้นทุนต่ำ) ที่จะทำการวิเคราะห์พลังงานสำหรับการถดถอยโลจิสติกอันดับ
ฉันกำลังมองหาโปรแกรม (ใน R หรือ SAS หรือสแตนด์อะโลนถ้าฟรีหรือต้นทุนต่ำ) ที่จะทำการวิเคราะห์พลังงานสำหรับการถดถอยโลจิสติกอันดับ
คำตอบ:
ฉันชอบที่จะทำการวิเคราะห์พลังงานเกินกว่าพื้นฐานโดยการจำลอง ด้วยแพ็คเกจสำเร็จรูปฉันไม่เคยแน่ใจเลยว่าจะมีการตั้งสมมติฐานอะไร
การจำลองพลังงานค่อนข้างตรงไปตรงมา (และราคาไม่แพง) โดยใช้อาร์
replicate
ฟังก์ชั่นเพื่อเรียกใช้โค้ดจากด้านบนหลายครั้ง (ฉันมักจะเริ่มต้นที่ประมาณ 100 ครั้งเพื่อให้ได้ความรู้สึกว่าต้องใช้เวลานานแค่ไหนและเพื่อให้ได้พื้นที่ทั่วไปที่เหมาะสมจากนั้นขึ้นไป 1,000 และบางครั้ง 10,000 หรือ 100,000 ค่าสุดท้ายที่ฉันจะใช้) สัดส่วนของเวลาที่คุณปฏิเสธสมมติฐานว่างคือพลังนี่คือตัวอย่างง่ายๆที่มีการถดถอยอันดับ
library(rms)
tmpfun <- function(n, beta0, beta1, beta2) {
x <- runif(n, 0, 10)
eta1 <- beta0 + beta1*x
eta2 <- eta1 + beta2
p1 <- exp(eta1)/(1+exp(eta1))
p2 <- exp(eta2)/(1+exp(eta2))
tmp <- runif(n)
y <- (tmp < p1) + (tmp < p2)
fit <- lrm(y~x)
fit$stats[5]
}
out <- replicate(1000, tmpfun(100, -1/2, 1/4, 1/4))
mean( out < 0.05 )
eta1 <- beta0 + beta1*x1 + beta2*x2 + beta3*x3
เช่น
ฉันจะเพิ่มอีกอย่างหนึ่งในคำตอบของ Snow (และนี่ใช้กับการวิเคราะห์พลังงานผ่านการจำลอง) - ให้ความสนใจว่าคุณกำลังมองหาการทดสอบแบบเทลด์ 1 หรือ 2 โปรแกรมยอดนิยมเช่น G * Power ค่าเริ่มต้นสำหรับการทดสอบแบบ 1 ด้านและหากคุณพยายามดูว่าแบบจำลองของคุณตรงกับพวกเขาหรือไม่ (เป็นความคิดที่ดีเสมอเมื่อคุณเรียนรู้วิธีการทำเช่นนี้)
เพื่อให้ Snow รันการทดสอบแบบ 1 ด้านฉันจะเพิ่มพารามิเตอร์ที่เรียกว่า "tail" ไปยังอินพุตของฟังก์ชั่นและใส่อะไรแบบนี้ลงในฟังก์ชั่นเอง:
#two-tail test
if (tail==2) fit$stats[5]
#one-tail test
if (tail==1){
if (fit$coefficients[5]>0) {
fit$stats[5]/2
} else 1
รุ่น 1 ด้านจะตรวจสอบโดยทั่วไปเพื่อดูว่าสัมประสิทธิ์เป็นค่าบวกแล้วจึงลดค่า p ลงครึ่งหนึ่ง
นอกเหนือจากตัวอย่างที่ยอดเยี่ยมของ Snow แล้วฉันเชื่อว่าคุณสามารถทำการจำลองการใช้พลังงานได้ด้วยการ resampling จากชุดข้อมูลที่มีอยู่ซึ่งมีผลกระทบกับคุณ ไม่ใช่บูตสแตรปเนื่องจากคุณไม่ได้สุ่มตัวอย่างพร้อมเปลี่ยนn ตัวเดียวกันแต่เป็นแนวคิดเดียวกัน
นี่คือตัวอย่าง: ฉันทำการทดสอบตัวเองเล็กน้อยซึ่งเปลี่ยนเป็นจุดบวก แต่เพราะน้อยไม่ได้มีนัยสำคัญทางสถิติในการถดถอยโลจิสติกอันดับ ด้วยการประมาณค่าจุดฉันจะต้องการa n จำนวนเท่าใด สำหรับความเป็นไปได้ต่างๆnผมหลายครั้งสร้างชุดข้อมูลและวิ่งถดถอยโลจิสติลำดับและเห็นว่าขนาดเล็กพี -value คือ:
library(boot)
library(rms)
npt <- read.csv("http://www.gwern.net/docs/nootropics/2013-gwern-noopept.csv")
newNoopeptPower <- function(dt, indices) {
d <- dt[sample(nrow(dt), n, replace=TRUE), ] # new dataset, possibly larger than the original
lmodel <- lrm(MP ~ Noopept + Magtein, data = d)
return(anova(lmodel)[7])
}
alpha <- 0.05
for (n in seq(from = 300, to = 600, by = 30)) {
bs <- boot(data=npt, statistic=newNoopeptPower, R=10000, parallel="multicore", ncpus=4)
print(c(n, sum(bs$t<=alpha)/length(bs$t)))
}
ด้วยผลลัพธ์ (สำหรับฉัน):
[1] 300.0000 0.1823
[1] 330.0000 0.1925
[1] 360.0000 0.2083
[1] 390.0000 0.2143
[1] 420.0000 0.2318
[1] 450.0000 0.2462
[1] 480.000 0.258
[1] 510.0000 0.2825
[1] 540.0000 0.2855
[1] 570.0000 0.3184
[1] 600.0000 0.3175
ในกรณีนี้ที่n = 600 กำลังงานเป็น 32% ไม่ค่อยให้กำลังใจ
(หากวิธีการจำลองของฉันผิดโปรดบอกใครสักคนฉันจะออกเอกสารทางการแพทย์สองสามฉบับเพื่อพูดคุยเกี่ยวกับการจำลองพลังในการวางแผนการทดลองทางคลินิก แต่ฉันไม่แน่ใจเกี่ยวกับการนำไปใช้อย่างแม่นยำ)
หมายถึงการจำลองแรก (แนะนำโดย Snow; /stats//a/22410/231675 ):
ฉันยังไม่แน่ใจว่าการจำลองควรมีลักษณะอย่างไรกับตัวแปรอิสระ (โดยเฉพาะสาม) มากขึ้น ฉันเข้าใจว่าฉันควรรวมไว้ในชิ้นส่วน eta1 เช่น eta1 <- beta0 + beta1 * x1 + beta2 * x2 + beta3 * x3 '' (ดังที่ได้กล่าวไว้ข้างต้น) แต่ฉันไม่ทราบวิธีการปรับพารามิเตอร์ที่เหลือในฟังก์ชั่น มีคนช่วยฉันด้วยสิ่งนี้ได้ไหม