আর-তে দ্বিপদী গ্ল্যামের প্রতিক্রিয়ার জন্য ইনপুট ফর্ম্যাট


13

ইন R, glmফাংশনটি ব্যবহার করে লজিস্টিক রিগ্রেশনটির জন্য ইনপুট ডেটা ফর্ম্যাট করার জন্য তিনটি পদ্ধতি রয়েছে :

  1. প্রতিটি পর্যবেক্ষণের জন্য ডেটা "বাইনারি" ফর্ম্যাটে থাকতে পারে (উদাহরণস্বরূপ, প্রতিটি পর্যবেক্ষণের জন্য y = 0 বা 1);
  2. ডেটা "উইলকিনসন-রজার্স" ফর্ম্যাটে থাকতে পারে (যেমন, y = cbind(success, failure)) প্রতিটি সারিতে একটি করে চিকিত্সা উপস্থাপন করে; অথবা
  3. প্রতিটি পর্যবেক্ষণের জন্য ডেটা ওজনযুক্ত বিন্যাসে থাকতে পারে (যেমন, y = 0.3, ওজন = 10)।

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

আমার প্রশ্ন: একটি ইনপুট ফর্ম্যাট অন্যের উপর ব্যবহার করার জন্য সংখ্যাসূচক বা পরিসংখ্যানগত সুবিধা রয়েছে কি? আমি দেখতে পেলাম কেবলমাত্র সুবিধাটি হ'ল Rমডেলের সাথে ব্যবহার করতে কারও ডেটা পুনরায় ফর্ম্যাট করা ।

আমি গ্ল্যাম ডকুমেন্টেশন দেখেছি , ওয়েবে এবং এই সাইটে অনুসন্ধান করেছি এবং একটি স্পর্শকাতর সম্পর্কিত পোস্ট পেয়েছি , তবে এই বিষয়ে কোনও গাইডেন্স নেই।

এখানে একটি অনুকরণীয় উদাহরণ যা এই আচরণটি দেখায়:

# Write function to help simulate data
drc4 <- function(x, b =1.0, c = 0, d = 1, e = 0){
    (d - c)/ (1 + exp(-b * (log(x)  - log(e))))
}
# simulate long form of dataset
nReps = 20
dfLong <- data.frame(dose = rep(seq(0, 10, by = 2), each = nReps))
dfLong$mortality <-rbinom(n = dim(dfLong)[1], size = 1,
                              prob = drc4(dfLong$dose, b = 2, e = 5))

# aggregate to create short form of dataset
dfShort <- aggregate(dfLong$mortality, by = list(dfLong$dose), 
                     FUN = sum)
colnames(dfShort) <- c("dose", "mortality")
dfShort$survival <- nReps - dfShort$mortality 
dfShort$nReps <- nReps
dfShort$mortalityP <- dfShort$mortality / dfShort$nReps

fitShort <- glm( cbind(mortality, survival) ~ dose, 
                 data = dfShort, 
                 family = "binomial")
summary(fitShort)

fitShortP <- glm( mortalityP ~ dose, data = dfShort, 
                  weights = nReps,     
                  family = "binomial")
summary(fitShortP)

fitLong <- glm( mortality ~ dose, data = dfLong, 
                family = "binomial")
summary(fitLong)

1
আপনার উদাহরণে, নাল এবং অবশিষ্ট অব্যবস্থার মধ্যে পার্থক্য তিনটি মডেলের জন্য সমান। আপনি যদি কোনও প্যারামিটার যুক্ত করেন বা সরিয়ে থাকেন তবে এআইসির পরিবর্তনও তিনটির জন্য একই।
জনি লমন্ড

1
আপনি নিজেরাই উত্তর দিয়েছেন: যদি একই তথ্য ব্যবহার করে, একই ফলাফলের জন্য, তবে কীভাবে তারা আলাদা হতে পারে? তদ্ব্যতীত, যদি পদ্ধতিটি কেবলমাত্র বিভিন্ন ফর্ম্যাটে ডেটা সরবরাহের কারণে বিভিন্ন ফলাফল দেয়, তবে এটির সাথে বা এর প্রয়োগের সাথে কোনও কিছু গভীরভাবে ভুল হবে।
টিম

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

আপনি যদি কোডিংয়ের তিনটি পদ্ধতি ব্যবহার করে কোনও কোসিবিনোমিয়াল মডেল ফিট করেন তবে তারা বিভিন্ন ফলাফল তৈরি করতে পারে, ঠিক আছে, যেহেতু দ্বিপদী ডেটা হিসাবে কোডেড হয়ে গেলে কিন্তু লজিস্টিক / বাইনারি ডেটা হিসাবে কোডড করার সময় নয়, তবে একটি ইতিবাচক মাত্রা ছাড়তে পারে। নাকি আমি এতে ভুল করছি?
টম Wenseleers

উত্তর:


9

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

আমি মনে করি এটি সুস্পষ্ট বিচ্যুতি গণনার মধ্য দিয়ে যাওয়া দরকারী।

কোনও মডেলের বিচ্যুতি হ'ল 2 * (এলএল (স্যাচুরেটেড মডেল) - এলএল (মডেল))। ধরুন আপনি বিভিন্ন কোষ, যেখানে কক্ষে পর্যবেক্ষণ সংখ্যা , কক্ষে সব পর্যবেক্ষণের জন্য মডেল ভবিষ্যদ্বাণী আর হয় পর্যবেক্ষিত মান (0 বা 1) -th পর্যবেক্ষণ কক্ষে ।iniipiiyijji

দীর্ঘ ফর্ম

(প্রস্তাবিত বা নাল) মডেলটির লগ সম্ভাবনা

ij(log(pi)yij+log(1pi)(1yij))

এবং স্যাচুরেটেড মডেলের লগ সম্ভাবনাএটি 0 এর সমান, কারণ হয় 0 বা 1। নোট , তবে সুবিধার জন্য দয়া করে পড়ুন read শর্টহ্যান্ড হিসাবে , যা 0 হয়।

ij(log(yij)yij+log(1yij)(1yij)).
yijlog(0)0log(0)limx0+xlog(x)

সংক্ষিপ্ত ফর্ম (ওজনযুক্ত)

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

ini(log(pi)jyij/ni+log(1pi)(1j(yij/ni))

এটি ঠিক মডেল বক্রতা আমরা উপরোক্ত হিসাব, যা তোমাদের উপর সমষ্টি পুলিংয়ের দ্বারা দেখতে পারেন সমান যথাসম্ভব দীর্ঘ রুপে সমীকরণের।j

ইতিমধ্যে স্যাচুরেটেড বিচ্যুতি আলাদা। যেহেতু আমাদের আর 0-1 টি প্রতিক্রিয়া নেই, তবুও প্রতি পর্যবেক্ষণ অনুযায়ী একটি প্যারামিটার দিয়ে আমরা ঠিক 0 পেতে পারি না পরিবর্তে স্যাচুরেটেড মডেলের লগ-সম্ভাবনা হ'ল

ini(log(jyij/ni)jyij/ni+log(1jyij/ni)(1jyij/ni)).

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

ni = dfShort$nReps
yavg = dfShort$mortalityP
sum.terms <-ni*(log(yavg)*yavg + log(1 - yavg)*(1 - yavg))
# Need to handle NaN when yavg is exactly 0
sum.terms[1] <- log(1 - yavg[1])*(1 - yavg[1])

2*sum(sum.terms)
fitShortP$deviance - fitLong$deviance

আমি মনে করি আপনাকে স্যাচুরেটেড মডেলগুলির বিচ্যুতির জন্য অভিব্যক্তিটি পরিষ্কার করতে হবে। 0 লগ এত ভাল কাজ করে না।
অ্যাডমো

ধন্যবাদ, আমি কী বোঝাতে চাইছিলাম তা স্পষ্ট করে দেওয়া উচিত ছিল। আমি স্পষ্ট করতে একটি সম্পাদনা যুক্ত করেছি যে 0 লোগো দ্বারা (0) আমি এই প্রসঙ্গে 0 বলতে চাইছি।
জনি লমন্ড

ঠিক আছে তবে আমি সঠিকভাবে বিভ্রান্ত হয়েছি (আমাকে ক্ষমা করুন আমি কখনই কোনও বিস্তৃত বিবরণে বিচ্যুতিটি আবৃত করি না): যদি আপনার স্যাচুরেটেড মডেল ডিভ্যান্স হিসাবে লগ (y) y - লগ (1-y) (1-y) থাকে না, প্রতিটিই না শুধু 0 পর্যবেক্ষণ?
অ্যাডমো

2
"স্যাচুরেটেড মডেল" প্রতি পর্যবেক্ষণের জন্য একটি প্যারামিটার সহ একটি কল্পিত মডেল। সুতরাং প্রতিটি পর্যবেক্ষণের জন্য এর পূর্বাভাস সম্ভাবনা 1 বা 0, প্রকৃত পর্যবেক্ষণের মানের উপর নির্ভর করে। সুতরাং এক্ষেত্রে স্যাচুরেটেড মডেলের লগ সম্ভাবনা সত্যই 0, ডেটা কেবলমাত্র ডেটা যা স্যাচুরেটেড মডেল দ্বারা উত্পাদিত হতে পারে।
জনি লমন্ড

আপনি যদি কোডিংয়ের তিনটি পদ্ধতি ব্যবহার করে কোনও কোসিবিনোমিয়াল মডেল ফিট করেন তবে তারা বিভিন্ন ফলাফল তৈরি করতে পারে, ঠিক আছে, যেহেতু দ্বিপদী ডেটা হিসাবে কোডেড হয়ে গেলে কিন্তু লজিস্টিক / বাইনারি ডেটা হিসাবে কোডেড না হয়ে একটির ইতিবাচক মাত্রা ছাড়তে পারে। নাকি আমি এতে ভুল করছি?
টম Wenseleers
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.