লজিস্টিক রিগ্রেশন: গোষ্ঠীভুক্ত এবং দলবদ্ধ না হওয়া ভেরিয়েবল (আর ব্যবহার করে)


9

আমি এগ্রেস্তি (2007) পড়ছি, শ্রেণিবদ্ধ ডেটা বিশ্লেষণের পরিচিতি , ২ য়। সংস্করণ, এবং নিশ্চিত না যে আমি এই অনুচ্ছেদটি (p.106, 4.2.1) সঠিকভাবে বুঝতে পেরেছি (যদিও এটি সহজ হওয়া উচিত):

পূর্ববর্তী অধ্যায়ে স্নোরিং ও হৃদরোগ সম্পর্কিত সারণী 3.1-এ 254 টি বিষয় প্রতি রাতে শামুক খাওয়ার রিপোর্ট করেছে, যার মধ্যে 30 জনকে হৃদরোগ হয়েছে। যদি ডেটা ফাইলটিতে বাইনারি ডেটা গোষ্ঠী করা থাকে তবে ডেটা ফাইলের একটি লাইন 254 আকারের একটি নমুনা আকারের হার্ট ডিজিজের 30 টি হিসাবে এই তথ্যগুলিকে রিপোর্ট করে। পৃথক বিষয়, সুতরাং 30 লাইনে হৃদরোগের জন্য 1 এবং 224 লাইনে হৃদরোগের জন্য 0 রয়েছে contain উভয় প্রকারের ডেটা ফাইলের জন্য এমএল অনুমান এবং এসই মানগুলি একই।

অগোষ্ঠী ডেটা (1 নির্ভরশীল, 1 স্বতন্ত্র) একটি সেটকে রূপান্তর করতে সমস্ত তথ্য অন্তর্ভুক্ত করতে "লাইন" বেশি লাগবে !?

নিম্নলিখিত উদাহরণে একটি (অবাস্তব!) সাধারণ ডেটা সেট তৈরি করা হয় এবং একটি লজিস্টিক রিগ্রেশন মডেল তৈরি করা হয়।

গোষ্ঠীভুক্ত ডেটা আসলে কেমন হবে (ভেরিয়েবল ট্যাব?)? একই মডেলটি কীভাবে গ্রুপযুক্ত ডেটা ব্যবহার করে তৈরি করা যেতে পারে?

> dat = data.frame(y=c(0,1,0,1,0), x=c(1,1,0,0,0))
> dat
  y x
1 0 1
2 1 1
3 0 0
4 1 0
5 0 0
> tab=table(dat)
> tab
   x
y   0 1
  0 2 1
  1 1 1
> mod1=glm(y~x, data=dat, family=binomial())

উত্তর:


11

সারণী 3.1 নীচে পুনরুত্পাদন করা হয়:

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

এগ্রেস্তি স্নোরিং স্তরের জন্য নিম্নলিখিত সংখ্যার স্কোরগুলি বিবেচনা করেছেন: {0,2,4,5}।

আর এর সাথে একটি জিএলএম ফিট করার জন্য দুটি উপায় রয়েছে: হয় আপনার ফলাফলটি 0/1 এর ভেক্টর হিসাবে সরবরাহ করা হয় বা দুটি স্তরের একটি ফ্যাক্টর হিসাবে দেওয়া হয়, আপনার সূত্রের আরএইচএসের পূর্বাভাসকারীদের সাথে; বা আপনি সূত্রের lhs হিসাবে সাফল্য / ব্যর্থতার জন্য দুটি কলামের গণনা সহ একটি ম্যাট্রিক্স দিতে পারেন। পরেরটি অ্যাগ্রেস্তি যাকে 'গ্রুপবদ্ধ' ডেটা বলে তার সাথে মিলে। একটি তৃতীয় পদ্ধতি, যা গোষ্ঠীকরণের সেটিংসেও প্রযোজ্য , শ্রেণিবিন্যাস সারণীর প্রতিটি বিভাগের জন্য weights=কতটি ইতিবাচক এবং নেতিবাচক ফলাফল পরিলক্ষিত হয়েছে তা নির্দেশ করার জন্য যুক্তিটি ব্যবহার করা হবে ।

ম্যাট্রিক্স ভিউতে ডেটা পড়বে:

snoring <- matrix(c(24,35,21,30,1355,603,192,224), nc=2)

এর থেকে আমরা নিম্নরূপে একটি data.frameদীর্ঘ ফর্ম্যাট (2484 সারি = sum(snoring)পর্যবেক্ষণ) তৈরি করতে পারি :

snoring.df <- data.frame(snoring=gl(4, 1, labels=c("Never", "Occasional",
                                                   "Nearly every night", 
                                                   "Every night")),
                         disease=gl(2, 4, labels=c("Yes", "No")),
                         counts=as.vector(snoring))
snoring.df <- snoring.df[rep(seq_len(nrow(snoring.df)), snoring.df$counts), 1:2]

এবং নিম্নলিখিত দুটি মডেল অভিন্ন ফলাফল আনবে:

levels(snoring.df$snoring) <- c(0, 2, 4, 5)
y <- abs(as.numeric(snoring.df$disease)-2)
x <- as.numeric(as.character(snoring.df$snoring))
fit.glm1 <- glm(y ~ x, family=binomial)

fit.glm2 <- glm(snoring ~ c(0, 2, 4, 5), family=binomial)

এটাই, logit[π^(এক্স)]=-3,87+ +0.40এক্স, অ্যাগ্রেস্টির স্বরলিপি ব্যবহার করে।

দ্বিতীয় স্বরলিপি ঘন ঘন মত একটি নির্দেশ দিয়ে রাশীকৃত টেবিলের উপর ব্যবহার করা হয় cbind(a, b), যেখানে aএবং bএকটি বাইনারি ইভেন্টের জন্য গন্য এর কলাম (যেমন দেখুন, হয় জেনারেলাইজড রৈখিক মডেল )। দেখে মনে হচ্ছে এটি ম্যাট্রিক্সের পরিবর্তে টেবিল ব্যবহার করার সময়ও (যেমন আপনার উদাহরণ হিসাবে) কাজ করবে

glm(as.table(snoring) ~ c(0, 2, 4, 5), family=binomial)

আপনাকে অনেক ধন্যবাদ! একটি নিখুঁত উত্তর! আমার একটি সাধারণ সংযোজন রয়েছে: as.table (snoring) এর পরিবর্তে আমি আমার উদাহরণের সমতুল্য হিসাবে টেবিল (x, y, dnn = c ('snoring', 'રોગ')) এর পরামর্শ দেব, কারণ দলবদ্ধভাবে অ-গোষ্ঠী রূপান্তরকরণ ডেটা আগ্রহ ছিল।
ফ্ল্লো করুন

1
@ ফ্ল্লো আপনি ঠিক বলেছেন আপনার এখনও আপনার আরএইচএস অ্যাডহক তৈরি করতে হবে । উদাহরণস্বরূপ, এর মতো কিছু tab <- table(x,y, dnn=c('snoring','disease')); glm(tab ~ as.numeric(rownames(tab)), family=binomial)কাজ করবে (সহগের জন্য বিয়োগ চিহ্ন বিপরীত কারণ কারণ "হ্যাঁ" 1 এর পরিবর্তে 0 কোড করা হয়েছে)।
chl
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.