बोल्कर 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)