লজিস্টিক রিগ্রেশন শক্তি বিশ্লেষণের সিমুলেশন - ডিজাইন করা পরীক্ষাগুলি


39

এই প্রশ্নটি লজিস্টিক রিগ্রেশন এবং এসএএস-এর সাথে পাওয়ার বিশ্লেষণ সম্পর্কিত আমি জিজ্ঞাসা করা একটি প্রশ্নের জবাবে @ গ্রেগ স্নোয়ের দেওয়া উত্তরের প্রতিক্রিয়া হিসাবে Proc GLMPOWER

যদি আমি একটি পরীক্ষার নকশা করছি এবং ফলাফলগুলিকে যুক্তিযুক্ত লজিস্টিক রিগ্রেশনকে বিশ্লেষণ করব, তবে আমি কীভাবে শক্তি বিশ্লেষণ পরিচালনা করতে সিমুলেশন (এবং এখানে ) ব্যবহার করতে পারি ?

এখানে একটি সহজ উদাহরণ যেখানে দুটি ভেরিয়েবল রয়েছে, প্রথমটি তিনটি সম্ভাব্য মান {0.03, 0.06, 0.09 on এবং দ্বিতীয়টি একটি ডামি সূচক {0,1 on গ্রহণ করে} প্রত্যেকের জন্য আমরা প্রতিটি সংমিশ্রনের প্রতিক্রিয়া হার অনুমান করি (প্রতিক্রিয়াশীলদের # জন / বিপণিত লোকের সংখ্যা)। তদ্ব্যতীত, আমরা অন্যদের চেয়ে প্রথম কারণগুলির সংখ্যার চেয়ে বহুগুণ (যেটিকে সমান হিসাবে বিবেচনা করা যেতে পারে) এর চেয়ে তিনগুণ বেশি কামনা করি কারণ এই প্রথম সংমিশ্রণটি আমাদের চেষ্টা করা এবং সত্য সংস্করণ। এটি লিঙ্কিত প্রশ্নে উল্লিখিত এসএএস কোর্সে দেওয়া মত একটি সেটআপ।

এখানে চিত্র বর্ণনা লিখুন

ফলাফলগুলি বিশ্লেষণ করতে যে মডেলটি ব্যবহৃত হবে তা হ'ল লজিস্টিক রিগ্রেশন, মূল প্রভাব এবং মিথস্ক্রিয়া সহ (প্রতিক্রিয়া 0 বা 1)।

mod <- glm(response ~ Var1 + Var2 + I(Var1*Var2))

শক্তি বিশ্লেষণ পরিচালনার জন্য আমি কীভাবে এই মডেলটির সাথে ব্যবহারের জন্য ডেটা সেট সিমুলেট করতে পারি?

যখন আমি এটি এসএএসের মাধ্যমে চালনা করি Proc GLMPOWER( STDDEV =0.05486016 যা sqrt(p(1-p))দেখায় প্রতিক্রিয়া হারের ওয়েট গড় যেখানে পি এর সাথে মিলে) ব্যবহার করে:

data exemplar;
  input Var1 $ Var2 $ response weight;
  datalines;
    3 0 0.0025  3
    3 1 0.00395 1
    6 0 0.003   1
    6 1 0.0042  1
    9 0 0.0035  1
    9 1 0.002   1;
run;

proc glmpower data=exemplar;
  weight weight;
  class Var1 Var2;
  model response = Var1 | Var2;
  power
    power=0.8
    ntotal=.
    stddev=0.05486016;
run;

দ্রষ্টব্য: GLMPOWERকেবলমাত্র শ্রেণি (নামমাত্র) ভেরিয়েবলগুলি ব্যবহার করবে সুতরাং উপরের 3, 6, 9 টি অক্ষর হিসাবে বিবেচিত হবে এবং নিম্ন, মধ্য এবং উচ্চ বা অন্য কোনও তিনটি স্ট্রিং থাকতে পারে। আসল বিশ্লেষণ পরিচালিত হলে, ভার 1 কোনও বক্রতার জন্য অ্যাকাউন্টিংয়ের জন্য একটি সংখ্যাসূচক (এবং আমরা বহুবচনীয় শব্দ ভার 1 * ভার 1 অন্তর্ভুক্ত করব) ব্যবহার করব।

এসএএস থেকে আউটপুট হয়

এখানে চিত্র বর্ণনা লিখুন

সুতরাং আমরা দেখতে পাচ্ছি যে আমাদের নমুনা আকার হিসাবে (ভার 2 মূল প্রভাব অনুমান করা সবচেয়ে শক্ত) এর সাথে 0.80 এর সমান শক্তি এবং আলফা 0.05 এর সমান need আমরা এগুলিকে বরাদ্দ করব যাতে 3 বারের মতো বেসলাইন সংমিশ্রণ ঘটে (যেমন 0.375 * 762112) এবং বাকী অংশগুলি অন্য 5 টি সংমিশ্রণে সমানভাবে পড়ে যায়।


আর.এই প্রথম প্রশ্নে এটি করা সহজ: আমি কি ঠিক করেছি যে আপনি চান যে সমস্ত ক্ষেত্রে 75% হ'ল {var1 = .03, var2 = 0} এবং 25% অন্যান্য সমস্ত কম্বোয়ের জন্য, এবং সেখানে প্রতি 1 টির জন্য 3 ইউনিট নয় অন্যান্য কম্বোয়ের প্রতিটি ইউনিট (অর্থাত্, 37.5%)? দ্বিতীয় প্রশ্ন, আপনি সনাক্ত করতে আগ্রহী প্রভাবগুলি নির্দিষ্ট করতে পারেন? অর্থাৎ, 1 বনাম 0 এর লগ প্রতিক্রিয়াগুলি কী হবে? সাফল্যের লগ প্রতিক্রিয়াগুলি কীভাবে পরিবর্তিত হবে যদি var1 .01 দ্বারা যায়? আপনি কি মনে করেন যে কোনও ইন্টারঅ্যাকশন হতে পারে (যদি তা হয় তবে এটি কত বড়)? (এনবি, এই কিউর উত্তর দেওয়া শক্ত হতে পারে, 1 কৌশলটি প্রতিটি কম্বোতে আপনার মনে হতে পারে এমন 1 টির অনুপাত নির্দিষ্ট করে দেওয়া উচিত।)
গং - মনিকা পুনরায় স্থাপন করুন

1 ম: বেসলাইন কেসের জন্য 3 এর ওজন হ'ল {var1 = 0.03, var2 = 0 many হিসাবে অনেকগুলি ক্ষেত্রে 3 গুণ বেশি} সুতরাং এসএএসের ফলাফলগুলি (যা বলে যে আমাদের প্রধান var২২,১১২ মোট নমুনার আকারের প্রয়োজন মূল প্রকারের বর্ণনাকে প্রত্যাখ্যান করার ৮০% শক্তি থাকতে পারে, সুতরাং এটি আমাদের প্রয়োজনীয় নমুনার আকার) এই বেসলাইন কেসটিতে 37.5% বরাদ্দ করা হবে।
বি_মিনার

২ য়: ঠিক আছে আমাদের সকলের প্রতিক্রিয়া হার (যা পরীক্ষার সংখ্যার চেয়ে সাফল্যের সংখ্যার প্রত্যাশিত অনুপাত)। সুতরাং, যদি আমরা Var1 = 0.03 এবং Var2 = 0 সহ 1,000 চিঠিগুলি প্রেরণ করি যা 0.03 (3%) এর ক্রেডিট কার্ডের সরাসরি মেইল ​​অফারে সুদের হারের অফারের সাথে মিল থাকতে পারে এবং খামে কোনও স্টিকার নেই (যেখানে ভার 2 = 1 এর অর্থ আছে) একটি স্টিকার), আমরা 1000 * 0.0025 প্রতিক্রিয়া আশা করি।
বি_মিনিয়ার

২ য় সমষ্টি: আমরা একটি মিথস্ক্রিয়া আশা করি - তাই প্রতিক্রিয়া হার। নোট করুন ভার 1 এর মানের উপর নির্ভর করে ভার 2 = 0 এর জন্য আলাদা প্রতিক্রিয়া হার রয়েছে। এগুলি কীভাবে লগ প্রতিক্রিয়াগুলিতে অনুবাদ করতে হবে এবং তারপরে একটি সিমুলেটেড ডেটা সেট নিশ্চিত তা নিশ্চিত।
বি_মিনার

যদিও একটি শেষ জিনিস। আমি লক্ষ্য করেছি যে প্রতিক্রিয়ার হারগুলি যখন var2 = 0 (যেমন, .25%, .30%, .35%) তখন var1 এর জন্য লিনিয়ার are আপনি কি লিনিয়ার এফেক্ট বা বক্ররেখার হতে চান? আপনার জানা উচিত যে সম্ভাবনাগুলি তাদের পরিসরের ছোট ছোট উপগ্রহের জন্য মোটামুটি রৈখিক দেখতে পারে তবে বাস্তবে রৈখিক হতে পারে না। লজিস্টিক রিগ্রেশন লগ প্রতিক্রিয়াগুলিতে রৈখিক, সম্ভাবনা নয় (আমি এখানে আমার উত্তরের মতো জিনিসগুলি নিয়ে আলোচনা করি )।
গুং - মনিকা পুনরায়

উত্তর:


43

preliminaries:

  • জি * পাওয়ার ম্যানুয়ালটিতে আলোচিত হিসাবে , আপনি কী সমাধান করতে চান তার উপর নির্ভর করে বিভিন্ন ধরণের পাওয়ার বিশ্লেষণ রয়েছে। (এটি, , এফেক্ট আকারের , এবং পাওয়ার একে অপরের সাথে সম্পর্কযুক্ত; এর মধ্যে তিনটি নির্দিষ্ট করে দেওয়া আপনাকে চতুর্থটির জন্য সমাধান করতে দেবে)) এস αNESα

    • আপনার বিবরণে, আপনি , এবং পাওয়ার = 80% দিয়ে নির্দিষ্ট করেছেন প্রতিক্রিয়া হারগুলি ক্যাপচার করতে আপনি উপযুক্ত জানতে চান । এটি একটি অগ্রাধিকার শক্তিα = .05Nα=.05
    • আমরা ধারণ -পরবর্তী শক্তি দিয়ে শুরু করতে পারি (প্রদত্ত , প্রতিক্রিয়া হার এবং আলফা প্রদত্ত শক্তি নির্ধারণ করুন ) কারণ এটি ধারণাটি সহজতর, এবং তারপরে উপরের দিকে সরানো যেতে পারেN
  • @ গ্রেগসনোর দুর্দান্ত পোস্টের পাশাপাশি , সিভিতে সিমুলেশন-ভিত্তিক পাওয়ার বিশ্লেষণের জন্য আরও একটি দুর্দান্ত গাইড এখানে পাওয়া যাবে: পরিসংখ্যানগত শক্তির গণনা করা । প্রাথমিক ধারণাগুলির সংক্ষিপ্তসার হিসাবে:

    1. আপনি সনাক্ত করতে সক্ষম হতে চান প্রভাব চিহ্নিত করুন
    2. সেই সম্ভাব্য পৃথিবী থেকে এন ডেটা তৈরি করুন
    3. সেই ভুল তথ্যকে নিয়ে পরিচালনা করার আপনি যে বিশ্লেষণটি চালাচ্ছেন তা চালান
    4. ফলাফলগুলি আপনার নির্বাচিত আলফা অনুযায়ী 'তাৎপর্যপূর্ণ' কিনা তা সঞ্চয় করুন
    5. অনেকগুলি ( ) বার পুনরাবৃত্তি করুন এবং সেই এর (উত্তর-পরবর্তী) পাওয়ার অনুমান হিসাবে% 'উল্লেখযোগ্য' ব্যবহার করুনএনBN
    6. প্রাক-অগ্রাধিকার শক্তি নির্ধারণ করতে, আপনার কাঙ্ক্ষিত শক্তি উত্পাদন করে এমন মান খুঁজে পেতে সম্ভাব্য এর অনুসন্ধান করুন N
  • আপনি যদি কোনও নির্দিষ্ট পুনরাবৃত্তির উপর তাত্পর্য খুঁজে পাবেন কিনা তা সম্ভাব্যতা (যেখানে হল শক্তি) দিয়ে বার্নোল্লি পরীক্ষার ফলাফল হিসাবে বোঝা যাবে । পুনরাবৃত্তির উপর যে অনুপাত পাওয়া যায় তা আমাদের সত্যিকারের অনুমান করতে দেয় । আরও ভাল অনুমানের জন্য, আমরা বাড়াতে পারি , যদিও এটি সিমুলেশনটি আরও বেশি সময় নিতে পারে। পি বি পি বিppBpB

  • আর-তে, 'সাফল্যের' প্রদত্ত সম্ভাব্যতা সহ বাইনারি ডেটা উত্পন্ন করার প্রাথমিক উপায় হ'ল rbinom

    • উদাহরণস্বরূপ, সম্ভাব্যতা পি সহ 10 বার্নোল্লি ট্রায়ালের মধ্যে সাফল্যের সংখ্যা পেতে কোডটি হবে rbinom(n=10, size=1, prob=p), (আপনি সম্ভবত ফলাফলটি কোনও পরিবর্তনশীলকে স্টোরেজের জন্য নির্ধারণ করতে চাইবেন)
    • আপনি যেমন রনিফ , উদাহরণস্বরূপ, ব্যবহার করে কম মার্জিতভাবে এ জাতীয় ডেটা তৈরি করতে পারেন ,ifelse(runif(1)<=p, 1, 0)
    • যদি আপনি বিশ্বাস করেন যে ফলাফলগুলি একটি সুপ্ত গাউসিয়ান ভেরিয়েবল দ্বারা মধ্যস্থতা লাভ করে, আপনি ? rnorm দিয়ে আপনার covariates এর একটি ফাংশন হিসাবে সুপ্ত পরিবর্তনশীল তৈরি করতে পারেন এবং তারপরে সেগুলি সম্ভাব্যতায় রূপান্তর করতে pnorm()পারেন এবং আপনার কোডটিতে সেগুলি ব্যবহার করতে পারেন rbinom()
  • আপনি উল্লেখ করেছেন যে কোনও বক্রতার জন্য অ্যাকাউন্টে আপনি "বহুবচনীয় শব্দ ভার 1 * ভার 1 অন্তর্ভুক্ত করবেন"। এখানে একটা বিভ্রান্তি রয়েছে; বহুবর্ষীয় পদগুলি বক্রতার জন্য অ্যাকাউন্টে সহায়তা করতে পারে তবে এটি একটি ইন্টারঅ্যাকশন শব্দ - এটি আমাদের এইভাবে সহায়তা করবে না। তবুও, আপনার প্রতিক্রিয়া হারগুলির জন্য আমাদের মডেলটিতে স্কোয়ার শর্তাদি এবং ইন্টারঅ্যাকশন শর্তাদি উভয়ই অন্তর্ভুক্ত করা প্রয়োজন। বিশেষত, আপনার মডেলটির মূল শর্তগুলি ছাড়িয়ে : , , এবং অন্তর্ভুক্ত করতে হবে । v a r 1 v a r 2 v a r 1 2v a r 2var12var1var2var12var2

  • যদিও একটি ভিন্ন প্রশ্নের প্রসঙ্গে লেখা হয়েছে, আমার উত্তর এখানে: লজিট এবং প্রবিট মডেলগুলির মধ্যে পার্থক্য নিয়ে এই ধরণের মডেলগুলির সম্পর্কে প্রচুর প্রাথমিক তথ্য রয়েছে।
  • ঠিক যেমন বিভিন্ন ধরণের আছে প্রকার আমি ভুল হার যখন সেখানে একাধিক অনুমানের (যেমন, হয় প্রতি-এর বিপরীতে ত্রুটি হার , familywise ত্রুটি হার , & প্রতি পরিবার ত্রুটি হার ), তাই (শক্তি * এর বিভিন্ন ধরণের যেমন, জন্য একটি একক প্রাক-নির্দিষ্ট প্রভাব , কোনও প্রভাবের জন্য এবং সমস্ত প্রভাবের জন্য )। আপনি প্রভাবগুলির একটি নির্দিষ্ট সংমিশ্রণ সনাক্ত করতে বা সামগ্রিকভাবে মডেলের একসাথে পরীক্ষার শক্তির জন্যও অনুসন্ধান করতে পারেন। আপনার এসএএস কোড সম্পর্কে আপনার বর্ণনা থেকে আমার ধারণা এটি পরবর্তীটির সন্ধান করছে। তবে আপনার অবস্থার বর্ণনা থেকে আমি ধরে নিচ্ছি যে আপনি কমপক্ষে ইন্টারঅ্যাকশন প্রভাবগুলি সনাক্ত করতে চান।

  • পাওয়ার সম্পর্কিত সমস্যাগুলি সম্পর্কে চিন্তাভাবনা করার জন্য, আমার উত্তরটি এখানে দেখুন: নমুনার আকারকে ন্যায্য প্রমাণের প্রসঙ্গে পারস্পরিক সম্পর্কের অনুমানের ক্ষেত্রে সাধারণ নির্ভুলতার প্রতিবেদন কীভাবে করা যায়।

আর-তে লজিস্টিক রিগ্রেশনের জন্য সাধারণ পোস্ট-হক শক্তি:

ধরা যাক আপনার পোস্ট হওয়া প্রতিক্রিয়া হার বিশ্বের সত্যিকারের পরিস্থিতিকে উপস্থাপন করে এবং আপনি 10,000 টি চিঠি প্রেরণ করেছিলেন। এই প্রভাবগুলি সনাক্ত করার শক্তি কী? (নোট করুন যে আমি "কমিক্যালি অদক্ষ" কোড লেখার জন্য বিখ্যাত, নিম্নলিখিতটি দক্ষতার জন্য অনুকূলিত না হয়ে অনুসরণ করা সহজতর উদ্দেশ্য; বাস্তবে এটি বেশ ধীর গতির)

set.seed(1)

repetitions = 1000
N = 10000
n = N/8
var1  = c(   .03,    .03,    .03,    .03,    .06,    .06,    .09,   .09)
var2  = c(     0,      0,      0,      1,      0,      1,      0,     1)
rates = c(0.0025, 0.0025, 0.0025, 0.00395, 0.003, 0.0042, 0.0035, 0.002)

var1    = rep(var1, times=n)
var2    = rep(var2, times=n)
var12   = var1**2
var1x2  = var1 *var2
var12x2 = var12*var2

significant = matrix(nrow=repetitions, ncol=7)

startT = proc.time()[3]
for(i in 1:repetitions){
  responses          = rbinom(n=N, size=1, prob=rates)
  model              = glm(responses~var1+var2+var12+var1x2+var12x2, 
                           family=binomial(link="logit"))
  significant[i,1:5] = (summary(model)$coefficients[2:6,4]<.05)
  significant[i,6]   = sum(significant[i,1:5])
  modelDev           = model$null.deviance-model$deviance
  significant[i,7]   = (1-pchisq(modelDev, 5))<.05
}
endT = proc.time()[3]
endT-startT

sum(significant[,1])/repetitions      # pre-specified effect power for var1
[1] 0.042
sum(significant[,2])/repetitions      # pre-specified effect power for var2
[1] 0.017
sum(significant[,3])/repetitions      # pre-specified effect power for var12
[1] 0.035
sum(significant[,4])/repetitions      # pre-specified effect power for var1X2
[1] 0.019
sum(significant[,5])/repetitions      # pre-specified effect power for var12X2
[1] 0.022
sum(significant[,7])/repetitions      # power for likelihood ratio test of model
[1] 0.168
sum(significant[,6]==5)/repetitions   # all effects power
[1] 0.001
sum(significant[,6]>0)/repetitions    # any effect power
[1] 0.065
sum(significant[,4]&significant[,5])/repetitions   # power for interaction terms
[1] 0.017

সুতরাং আমরা দেখতে পাই যে 10,000 টি বর্ণচিহ্ন এই প্রতিক্রিয়া হারগুলি সনাক্ত করতে সত্যই 80% শক্তি (কোনও ধরণের) অর্জন করে না। (এসএএস কোডটি এই পদ্ধতির মধ্যে সম্পূর্ণ তাত্পর্যটি ব্যাখ্যা করতে সক্ষম হওয়ায় আমি যথেষ্ট পরিমাণে নিশ্চিত নই, তবে এই কোডটি ধারণাগতভাবে সোজা - যদি ধীর হয় - এবং আমি এটি যাচাই করতে কিছুটা সময় ব্যয় করেছি এবং আমার মনে হয় এগুলি ফলাফল যুক্তিসঙ্গত।)

লজিস্টিক রিগ্রেশনটির জন্য সিমুলেশন-ভিত্তিক একটি-প্রাইমারী শক্তি:

এখান থেকে ধারণাটি কেবল সম্ভাব্য অনুসন্ধান অনুসন্ধান করা যতক্ষণ না আমরা এমন কোনও মান খুঁজে পাই যা আপনি আগ্রহী সে ধরণের পাওয়ারের পছন্দসই স্তরটি প্রদান করে। এটির সাথে কাজ করার জন্য যে কোনও অনুসন্ধান কৌশল আপনি কোড আপ করতে পারেন তা ঠিক থাকবে (মধ্যে তত্ত্ব)। প্রদত্ত এর যে এই ধরনের ছোট প্রভাব ক্যাপচার করার প্রয়োজন হতে করতে যাচ্ছি, তা কিভাবে এই আরো দক্ষতার সঙ্গে কাজ করতে সম্পর্কে মূল্য চিন্তা হয়। আমার সাধারণ পদ্ধতিটি কেবল নিষ্ঠুর শক্তি, অর্থাত্ প্রতিটি মূল্যায়ন করার জন্য যা আমি যুক্তিযুক্তভাবে বিবেচনা করতে পারি। (তবে নোট করুন, আমি সাধারণত কেবল একটি ছোট পরিসীমা বিবেচনা করব এবং আমি খুব কম সাথে কাজ করছি - কমপক্ষে এর তুলনায়।) এন এন এনNNNN

পরিবর্তে, এখানে আমার কৌশলটি ছিল সম্ভাব্য এর ব্র্যাককেট করার জন্য ক্ষমতার পরিসীমা কী হবে তা উপলব্ধি করা। সুতরাং, আমি 500,000 এর একটি বেছে নিয়েছি এবং কোডটি পুনরায় চালিয়েছি (একই বীজের সূচনা করে, এনবি এটি চালাতে দেড় ঘন্টা সময় নিয়েছিল)। ফলাফল এখানে: এনNN

sum(significant[,1])/repetitions      # pre-specified effect power for var1
[1] 0.115
sum(significant[,2])/repetitions      # pre-specified effect power for var2
[1] 0.091
sum(significant[,3])/repetitions      # pre-specified effect power for var12
[1] 0.059
sum(significant[,4])/repetitions      # pre-specified effect power for var1X2
[1] 0.606
sum(significant[,5])/repetitions      # pre-specified effect power for var12X2
[1] 0.913
sum(significant[,7])/repetitions      # power for likelihood ratio test of model
[1] 1
sum(significant[,6]==5)/repetitions   # all effects power
[1] 0.005
sum(significant[,6]>0)/repetitions    # any effect power
[1] 0.96
sum(significant[,4]&significant[,5])/repetitions   # power for interaction terms
[1] 0.606

আমরা এগুলি থেকে দেখতে পাচ্ছি যে আপনার প্রভাবগুলির মাত্রার পরিমাণে যথেষ্ট পরিমাণে পার্থক্য রয়েছে এবং এইভাবে এগুলি সনাক্ত করার আপনার ক্ষমতা বিভিন্ন হয়। উদাহরণস্বরূপ, এর প্রভাবটি সনাক্ত করা বিশেষত কঠিন, অর্ধ মিলিয়ন অক্ষর সহকারে কেবলমাত্র 6% সময় উল্লেখযোগ্য। অন্যদিকে, সামগ্রিকভাবে মডেলটি নাল মডেলের চেয়ে সর্বদা উল্লেখযোগ্যভাবে ভাল ছিল। অন্যান্য সম্ভাবনাগুলি মাঝখানে সাজানো আছে। যদিও প্রতিটি পুনরাবৃত্তির উপরে বেশিরভাগ 'ডেটা' ফেলে দেওয়া হয়, তবুও বেশ কিছু ভাল অনুসন্ধান এখনও সম্ভব। উদাহরণস্বরূপ, আমরা ম্যাট্রিক্সটি বিভিন্ন ভেরিয়েবলের সম্ভাব্যতার মধ্যে পারস্পরিক সম্পর্কের তাৎপর্যগুলি মূল্যায়নের জন্য মূল্যায়ন করতে পারি। var12significant

আমার উপসংহারে উল্লেখ করা উচিত, আপনার পরিস্থিতিতে জটিলতা এবং বৃহত্তর জড়িত থাকার কারণে, এটি আমার প্রাথমিক মন্তব্যে সন্দেহ / দাবি করার মতো সহজ ছিল না। যাইহোক, আমি কীভাবে এখানে রেখেছি তা থেকে কীভাবে এটি সাধারণভাবে করা যায় এবং শক্তি বিশ্লেষণে জড়িত সমস্যাগুলি সম্পর্কে আপনি অবশ্যই ধারণা পেতে পারেন। আছে HTH। N


গাং - ওয়াও আপনাকে এ জাতীয় বিস্তারিত এবং চিন্তাশীল উত্তরের জন্য অনেক ধন্যবাদ! আমার নিজের লিখতে এবং আপনার কোডের সাথে খেলতে, চতুষ্কোণ শর্তগুলি ইস্যু হিসাবে উপস্থিত বলে মনে হচ্ছে - কমপক্ষে ৮০% শক্তি মডেলটিকে বিবেচনা না করেই অনেক ছোট নমুনা আকারের সাথে অর্জন করেছে।
বি_মিনার

1
এটি দুর্দান্ত, @ বি_মিনার, আপনি যে ধরনের কাজটি করতে চান এটি। তদুপরি, এটি আমার মনে হয় যে সিমুলেশন-ভিত্তিক পদ্ধতির বিশ্লেষণাত্মক সফ্টওয়্যার থেকে সুনির্দিষ্ট যে কেবল একটি সংখ্যা বের করে দেয় (আর এটিরও রয়েছে pwrপ্যাকেজ)। এই পদ্ধতির সাহায্যে আপনি কী ঘটবেন বলে আশা করছেন, আপনি কীভাবে ডাব্লু / যে, ইত্যাদি ব্যবহার করবেন তা নিয়ে আরও স্পষ্টভাবে চিন্তা করার সুযোগ দেয় (এন / বা আপনার চিন্তাভাবনা পরিমার্জন) সাদৃশ্যপূর্ণ, যদি আপনার পোস্ট করা হারগুলি সঠিক হয়, খ / সি সেগুলি লিনিয়ার নয়, এবং একাকী ইন্টারঅ্যাকশন আপনাকে বক্ররেখার সম্পর্ক ক্যাপচার করতে দেয় না।
গুং - মনিকা পুনরায়

আমি মনে করি আপনি polyআর এর নতুন ব্যবহারকারীদের কাঁচা মানগুলি স্কোয়ার করার আরও ত্রুটি-ঝুঁকির কৌশল না দেখানোর পরিবর্তে ব্যবহারটি প্রদর্শন করা উচিত । আমি মনে করি পুরো মডেলটি হিসাবে ভঙ্গ করা উচিত ছিল glm(responses~ poly(var1, 2) * var2, family=binomial(link="logit")। এটি ব্যাখ্যায় পরিসংখ্যানগত ত্রুটি এবং আরও অনেক কমপ্যাক্ট উভয়ই কম প্রবণ হবে। আপনি কেবল একটি সামগ্রিক ফিটের দিকে তাকিয়ে থাকাকালীন এই সঠিক উদাহরণে গুরুত্বপূর্ণ হতে পারে না, তবে সহজেই কম পরিশীলিত ব্যবহারকারীদের বিভ্রান্ত করতে পারেন যারা স্বতন্ত্র পদগুলি দেখার জন্য প্ররোচিত হতে পারে।
ডিওয়িন

@ ডুইন, আমি যখন এখানে সিভিতে জিনিসগুলি বর্ণনা করার জন্য আর ব্যবহার করি তখন আমি এটি খুব অ-আর পদ্ধতিতে করি do ধারণাটি তাদের পক্ষে যতটা সম্ভব স্বচ্ছ হতে হবে, যারা ডাব্লু / আর। পরিচিত নয়, উদাহরণস্বরূপ, আমি ভেক্টরাইজড সম্ভাবনাগুলি ব্যবহার করছি না, লুপগুলি ব্যবহার করছি =, ইত্যাদি a শ্রেণি, এবং poly()তারা আর ব্যবহারকারী না হলে কী তা সম্পর্কে কম সচেতন ।
গুং - মনিকা পুনরায়

17

@ গুং এর উত্তরটি বোঝার জন্য দুর্দান্ত। আমি যে পদ্ধতিটি ব্যবহার করব তা এখানে:

mydat <- data.frame( v1 = rep( c(3,6,9), each=2 ),
    v2 = rep( 0:1, 3 ), 
    resp=c(0.0025, 0.00395, 0.003, 0.0042, 0.0035, 0.002) )

fit0 <- glm( resp ~ poly(v1, 2, raw=TRUE)*v2, data=mydat,
    weight=rep(100000,6), family=binomial)
b0 <- coef(fit0)


simfunc <- function( beta=b0, n=10000 ) {
    w <- sample(1:6, n, replace=TRUE, prob=c(3, rep(1,5)))
    mydat2 <- mydat[w, 1:2]
    eta <- with(mydat2,  cbind( 1, v1, 
                v1^2, v2,
                v1*v2,
                v1^2*v2 ) %*% beta )
    p <- exp(eta)/(1+exp(eta))
    mydat2$resp <- rbinom(n, 1, p)

    fit1 <- glm( resp ~ poly(v1, 2)*v2, data=mydat2,
        family=binomial)
    fit2 <- update(fit1, .~ poly(v1,2) )
    anova(fit1,fit2, test='Chisq')[2,5]
}

out <- replicate(100, simfunc(b0, 10000))
mean( out <= 0.05 )
hist(out)
abline(v=0.05, col='lightgrey')

এই ফাংশনটি ভি 2 এর সামগ্রিক প্রভাব পরীক্ষা করে, অন্যান্য ধরণের পরীক্ষাগুলি দেখতে মডেলগুলি পরিবর্তন করা যেতে পারে। আমি এটি একটি ফাংশন হিসাবে লিখতে পছন্দ করি যাতে আমি যখন অন্যরকম কিছু পরীক্ষা করতে চাই তখন আমি কেবল ফাংশন যুক্তিগুলি পরিবর্তন করতে পারি। আপনি একটি অগ্রগতি বার যুক্ত করতে পারেন, বা জিনিসগুলি গতি বাড়ানোর জন্য সমান্তরাল প্যাকেজটি ব্যবহার করতে পারেন।

এখানে আমি কেবল 100 টি প্রতিলিপি করেছি, আমি প্রায় সেই স্তরটির কাছাকাছি শুরু করে আনুমানিক নমুনার আকার খুঁজে পেতে, তারপরে যখন ডান বল পার্কে থাকি তখন বিবর্তনগুলি (যখন আপনার 20% শক্তি থাকে তখন 10,000 পুনরাবৃত্তিতে সময় নষ্ট করার দরকার নেই)।


ধন্যবাদ গ্রেগ! আমি এই একই পদ্ধতির বিষয়ে ভাবছিলাম (যদি আপনি সঠিকভাবে কী বুঝতে পেরেছেন)। নিশ্চিত করার জন্য: আপনি কি ডেটা সেট তৈরি করছেন (বাস্তবে, তবে ভার 1 এবং ভার 2 এর মানগুলির স্বতন্ত্র রেকর্ড তৈরি করার জন্য নিষ্ঠুর বলের পরিবর্তে ওজন দিয়ে এটি করছেন এবং তারপরে 1 এবং 0 এর প্রতিক্রিয়া রয়েছে) যা "মাইডিট" এর উপর ভিত্তি করে খুব বড় , একটি লজিস্টিক রিগ্রেশন ফিটিং এবং তারপরে সিমুলেশনে প্রস্তাবিত মডেল থেকে নমুনা করার জন্য সেই সহগগুলি ব্যবহার করে? মনে হয় এটি সহগের সাথে উপস্থিত হওয়ার একটি সাধারণ উপায় - তবে এটির সাথে আমি যুক্ত লিখিত অর্ডিনাল রিগ্রেশন পাওয়ার সম্পর্কে আপনার প্রতিক্রিয়াটির মতোই।
বি_মিনার

প্রাথমিক মডেলটি সহগের ব্যবহারের জন্য ওজন ব্যবহার করে তবে সিমুলেশনে এটি nসারি সহ একটি ডেটা ফ্রেম তৈরি করে । ফাংশনে পাশাপাশি ওজন করা আরও দক্ষ হতে পারে।
গ্রেগ স্নো

আমি সঠিক যে আপনি প্রাথমিকভাবে ডেটা ব্যবহার করছেন (খুব ভাল অনুমানের জন্য এটি বড় করে তোলা) ব্যবহার করা সহগগুলি পাওয়ার উদ্দেশ্যে?
বি_মিনার

হ্যাঁ, বেশ বড়টি যাতে ওজন একটি পূর্ণসংখ্যাকে দেয় proportion
গ্রেগ স্নো

2
@ বি_মিনার, আমি একটি নিবন্ধ নিয়ে পরিকল্পনা করছি, আমি জানি না যে একটি পূর্ণ বইয়ের জন্য যথেষ্ট আছে কি না। তবে উত্সাহের জন্য ধন্যবাদ।
গ্রেগ তুষার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.