คำตอบ:
นี่คือแหล่งที่มาของรหัสจำลองในอาร์ฉันไม่แน่ใจว่ามีโมเดลเชิงเส้นที่ระบุเฉพาะเจาะจงหรือไม่ แต่บางทีพวกเขาก็มีตัวอย่างเพียงพอที่จะรับส่วนสำคัญ:
มีอีกสองตัวอย่างของการจำลองที่ไซต์ต่อไปนี้:
ดัดแปลงจากแบบจำลองเชิงนิเวศน์และข้อมูลเชิงนิเวศน์ของ Bolker 2009 ในอาร์คุณต้องประกาศความแข็งแกร่งของแนวโน้ม (เช่นความชัน) ที่คุณต้องการทดสอบ เทรนด์ที่คาดเดายากและความแปรปรวนต่ำจะต้องใช้ตัวอย่างขนาดเล็กแนวโน้มอ่อนแอและความแปรปรวนขนาดใหญ่จะต้องใช้ขนาดตัวอย่างขนาดใหญ่
a = 2 #desired slope
b = 1 #estimated intercept
sd = 20 #estimated variability defined by standard deviation
nsim = 400 #400 simulations
pval = numeric(nsim) #placeholder for the second for loop output
Nvec = seq(25, 100, by = 1) #vector for the range of sample sizes to be tested
power.N = numeric(length(Nvec)) #create placeholder for first for loop output
for (j in 1:length(Nvec)) {
N = Nvec[j]
x = seq(1, 20, length = Nvec[j]) #x value length needs to match sample size (Nvec) length
for (i in 1:nsim) { #for this value of N, create random error 400 times
y_det = a + b * x
y = rnorm(N, mean = y_det, sd = sd)
m = lm(y ~ x)
pval[i] = coef(summary(m))["x", "Pr(>|t|)"] #all the p values for 400 sims
} #cycle through all N values
power.N[j] = sum(pval < 0.05)/nsim #the proportion of correct p-values (i.e the power)
}
power.N
plot(Nvec, power.N) #need about 90 - 100 samples for 80% power
นอกจากนี้คุณยังสามารถจำลองแนวโน้มต่ำสุดที่คุณสามารถทดสอบสำหรับขนาดตัวอย่างที่กำหนดดังที่แสดงในหนังสือ
bvec = seq(-2, 2, by = 0.1)
power.b = numeric(length(bvec))
for (j in 1:length(bvec)) {
b = bvec[j]
for (i in 1:nsim) {
y_det = a + b * x
y = rnorm(N, mean = y_det, sd = sd)
m = lm(y ~ x)
pval[i] = coef(summary(m))["x", "Pr(>|t|)"]
}
power.b[j] = sum(pval < 0.05)/nsim
}
power.b
plot(bvec, power.b)