আমি এমন একটি প্রোগ্রাম খুঁজছি (আর বা এসএএস বা স্বতন্ত্র ক্ষেত্রে, নিখরচায় বা স্বল্প খরচে) যা অर्डিনাল লজিস্টিক রিগ্রেশনের জন্য পাওয়ার বিশ্লেষণ করবে।
আমি এমন একটি প্রোগ্রাম খুঁজছি (আর বা এসএএস বা স্বতন্ত্র ক্ষেত্রে, নিখরচায় বা স্বল্প খরচে) যা অर्डিনাল লজিস্টিক রিগ্রেশনের জন্য পাওয়ার বিশ্লেষণ করবে।
উত্তর:
আমি সিমুলেশন দ্বারা বেসিকের বাইরে পাওয়ার বিশ্লেষণ করতে পছন্দ করি। পূর্বনির্ধারিত প্যাকেজগুলির সাথে, আমি কখনই অনুমান করা হচ্ছে তা পুরোপুরি নিশ্চিত নই।
পাওয়ারের জন্য সিমুলেটিংটি আর ব্যবহার করে বেশ সোজা এগিয়ে (এবং সাশ্রয়ী মূল্যের) is
replicate
একগুচ্ছ সময়ের উপরের কোডটি চালানোর জন্য ফাংশনটি ব্যবহার করুন (আমি সাধারণত এটি প্রায় 100 বছর সময় লাগে এবং সঠিক জেনারেলটি পেতে সঠিক অনুভূতি পেতে শুরু করি, তারপর এটি 1000 এবং কখনও কখনও 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
।
replicate
ফাংশনে নেই এবং সংশোধন করে না। ফাংশনটি একটি পুনরাবৃত্তির জন্য পি-মান (ফিটে $ পরিসংখ্যান [5]) প্রদান করে, প্রতিলিপিটি ফাংশনটি 1000 বার চালায় (বা আপনি যে সংখ্যা নির্ধারণ করুন) এবং 1,000 পি-মানগুলি প্রদান করে, mean
ফাংশনটি তার অনুপাতের পরে অনুপাত করে পরীক্ষাগুলি যে এ প্রত্যাখ্যান করবে ।
আমি স্নোয়ের উত্তরে আরও একটি জিনিস যুক্ত করব (এবং এটি সিমুলেশনের মাধ্যমে কোনও পাওয়ার বিশ্লেষণে প্রযোজ্য) - আপনি 1 বা 2 লেজযুক্ত পরীক্ষার সন্ধান করছেন কিনা তা মনোযোগ দিন pay জি * পাওয়ারের মতো জনপ্রিয় প্রোগ্রামগুলি 1-লেজযুক্ত পরীক্ষায় ডিফল্ট এবং আপনি যদি সিমুলেশনগুলি তাদের সাথে মেলে কিনা তা দেখার চেষ্টা করছেন (আপনি কীভাবে এটি করতে শিখছেন তখন সর্বদা একটি ভাল ধারণা), আপনি প্রথমে এটি পরীক্ষা করতে চান।
স্নোকে চালানোর জন্য 1-লেজযুক্ত পরীক্ষা করার জন্য, আমি ফাংশন ইনপুটগুলিতে "লেজ" নামে একটি প্যারামিটার যুক্ত করব এবং নিজেই ফাংশনে এই জাতীয় কিছু যুক্ত করব:
#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-লেজযুক্ত সংস্করণটি মূলত সহগটি ইতিবাচক কিনা তা পরীক্ষা করে এবং তারপরে পি-মানটি অর্ধেক করে দেয়।
স্নো এর দুর্দান্ত উদাহরণ ছাড়াও, আমি বিশ্বাস করি যে আপনি বিদ্যমান ডেটাসেট থেকে পুনরায় মডেল করে একটি পাওয়ার সিমুলেশনও করতে পারেন যা আপনার প্রভাব রয়েছে। কোনও বুটস্ট্র্যাপ নয়, যেহেতু আপনি একই এন -এর প্রতিস্থাপনের সাথে নমুনা-বানাচ্ছেন না , তবে একই ধারণা।
সুতরাং এখানে একটি উদাহরণ রয়েছে: আমি একটি সামান্য স্ব-পরীক্ষা চালিয়েছিলাম যা একটি ইতিবাচক দৃষ্টিকোণ-অনুমানে পরিণত হয়েছিল তবে এটি সামান্য ছিল বলে, সাধারণ লজিস্টিক রিগ্রেশনটিতে পরিসংখ্যানগতভাবে-তাত্পর্যপূর্ণ ছিল না। সেই বিন্দু-অনুমানের সাথে, আমার কত বড় একটি এন দরকার হবে? বিভিন্ন সম্ভাব্য এন এর জন্য , আমি বহুবার একটি ডেটাসেট তৈরি করেছি এবং সাধারণ লজিস্টিক রিগ্রেশন চালিয়েছি এবং দেখেছি পি- মূল্য কত ছোট :
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%। খুব উত্সাহজনক নয়।
(যদি আমার সিমুলেশন পদ্ধতির ভুল হয় তবে দয়া করে কেউ আমাকে বলুন clin ক্লিনিকাল ট্রায়ালগুলির পরিকল্পনার জন্য পাওয়ার সিমুলেশন নিয়ে আমি কয়েকটি মেডিকেল পেপারগুলি বন্ধ করছি, তবে আমি আমার সঠিক প্রয়োগ সম্পর্কে মোটেও নিশ্চিত নই।)
প্রথম সিমুলেশন উল্লেখ করে (স্নো দ্বারা প্রস্তাবিত; /stats//a/22410/231675 ):
আমি এখনও নিশ্চিত নই যে আরও বেশি (বিশেষত তিনটি) স্বতন্ত্র ভেরিয়েবলগুলির সাথে সিমুলেশনটি কেমন হওয়া উচিত। আমি বুঝতে পেরেছি যে আমার 'এটিকে সবগুলি এটা 1 টুকরোতে অন্তর্ভুক্ত করা উচিত, যেমন এটা 1 <- বিটা 0 + বিটা 1 * এক্স 1 + বিটা 2 * এক্স 2 + বিটা 3 * এক্স 3' '(উপরে উল্লিখিত হিসাবে)। তবে আমি জানিনা কীভাবে ফাংশনে বাকী প্যারামিটারগুলি সামঞ্জস্য করতে হয়। কেউ আমাকে এই সাহায্য করতে পারে?