Logistic Regression for Binary Data Analysis in R
Logistic Regression হল একটি পরিসংখ্যানিক মডেল যা বিশেষভাবে ব্যবহৃত হয় যখন আপনার আউটপুট বা ডিপেনডেন্ট ভেরিয়েবলটি দুটি শ্রেণিতে বিভক্ত (binary) থাকে। এটি সাধারণত কেটেগোরিকাল আউটপুট ভেরিয়েবলকে প্রেডিক্ট করতে ব্যবহৃত হয়, যেমন হ্যাঁ অথবা না, সফল অথবা ব্যর্থ ইত্যাদি।
Binary Logistic Regression:
যখন আপনার আউটপুট ভেরিয়েবলটি দুইটি সম্ভাব্য মান ধারণ করে (যেমন, 0 অথবা 1), তখন এটি binary logistic regression হয়। এই মডেলটি একটি সম্ভাবনা প্রদান করে যা দুটি শ্রেণির মধ্যে একজন সদস্য হওয়ার সম্ভাবনাকে প্রতিনিধিত্ব করে।
যেমন: একটি প্রেডিকশন করা হতে পারে যে একজন রোগী বিস্তারিত পরীক্ষায় পাস করবেন কি না।
Logistic Regression Formula
লজিস্টিক রিগ্রেশন মডেলটির সাধারণ সমীকরণ হল:
\[
\text{logit}(p) = \beta_0 + \beta_1X_1 + \beta_2X_2 + \dots + \beta_nX_n
\]
এখানে,
- \( p \) হলো আউটপুট ভেরিয়েবলের সম্ভাবনা।
- \( \beta_0 \) হলো ইন্টারসেপ্ট।
- \( \beta_1, \beta_2, ..., \beta_n \) হলো ইনডিপেনডেন্ট ভেরিয়েবলগুলির জন্য কোইফিশিয়েন্ট।
লজিস্টিক রিগ্রেশন কোঅর্ডিনেটের মান (coefficients) \( \beta \)-এর মাধ্যমে আমাদের সম্ভাবনা নির্ধারণ করতে সক্ষম।
Logistic Regression Analysis in R
R-এ লজিস্টিক রিগ্রেশন মডেল তৈরি করতে glm() (Generalized Linear Model) ফাংশন ব্যবহার করা হয়, যেখানে family = binomial() দিয়ে নির্ধারণ করা হয় যে এটি একটি বাইনারি রিগ্রেশন মডেল।
১. Logistic Regression Model Example:
ধরা যাক, আমাদের কাছে একটি ডেটাসেট আছে যেখানে রোগীকে সফলভাবে চিকিৎসা দেওয়া হবে কিনা (Success = 1, Failure = 0) তা নির্ধারণ করার জন্য রোগীর বয়স এবং রক্তচাপ (Blood Pressure) আছেঃ
# ডেটাসেট তৈরি
my_data <- data.frame(
Age = c(25, 30, 35, 40, 45, 50, 55, 60),
BloodPressure = c(120, 130, 140, 150, 160, 170, 180, 190),
Success = c(1, 1, 1, 0, 0, 0, 1, 0)
)
# Logistic Regression মডেল তৈরি করা
model <- glm(Success ~ Age + BloodPressure, data = my_data, family = binomial())
# মডেলটির সারাংশ (Summary) দেখা
summary(model)এখানে, Success ~ Age + BloodPressure মানে আমরা "Success" ভেরিয়েবলটি প্রিডিক্ট করতে চাই এবং আর্গুমেন্ট হিসেবে "Age" এবং "BloodPressure" ব্যবহার করেছি। family = binomial() উল্লেখ করা হয়েছে যে এটি একটি বাইনারি লজিস্টিক রিগ্রেশন।
২. Model Coefficients:
মডেলটির সারাংশ দেখার মাধ্যমে, আপনি কোইফিশিয়েন্ট এবং এর মান দেখতে পারবেন:
summary(model)উল্লেখযোগ্য ফলাফল হতে পারে:
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -10.4897 4.8593 -2.160 0.0308 *
Age 0.1857 0.0932 1.994 0.0464 *
BloodPressure -0.0649 0.0433 -1.500 0.1348এখানে, Estimate কলাম কোইফিশিয়েন্টগুলির মান প্রতিনিধিত্ব করে, যার মাধ্যমে আমরা প্রতিটি ভেরিয়েবলের প্রভাব বিশ্লেষণ করতে পারি।
- Intercept (বা \( \beta_0 \)): এটি হল সেই পয়েন্ট যেখানে লজিস্টিক ফাংশন কেটে যায় (অর্থাৎ, যখন সব ভেরিয়েবলের মান শূন্য থাকে)।
- Age (বা \( \beta_1 \)): এটি \( Age \)-এর প্রভাব নির্দেশ করে। এর মান পজিটিভ, তাই Age বাড়ানোর সাথে সাথে "Success" এর সম্ভাবনা বাড়ছে।
- BloodPressure (বা \( \beta_2 \)): এটি
BloodPressureএর প্রভাব নির্দেশ করে, তবে এটি নেগেটিভ, অর্থাৎ রক্তচাপ বাড়ানোর সাথে "Success" এর সম্ভাবনা কমছে।
৩. Predicting with the Model:
লজিস্টিক রিগ্রেশন মডেলটির মাধ্যমে আপনি নতুন ডেটার উপর প্রেডিকশন করতে পারেন।
# নতুন ডেটার জন্য প্রেডিকশন করা
new_data <- data.frame(Age = c(32, 55), BloodPressure = c(140, 180))
predictions <- predict(model, new_data, type = "response")
# প্রেডিকশন দেখানো
print(predictions)এখানে, predict() ফাংশনটি নতুন ডেটার জন্য সম্ভাবনা (probabilities) বের করে দেবে, যেখানে type = "response" মানে এটি প্রেডিকশন কোডের আউটপুটকে 0-1 এর মধ্যে সম্ভাবনা হিসেবে ফেরত দেবে।
Understanding the Output of Logistic Regression:
- Log-Odds (Logit Function): আউটপুট আসলে লজ-অডস (log-odds) ফর্ম্যাটে থাকে, অর্থাৎ এটি কোনও ইভেন্টের ঘটার এবং না ঘটার সম্পর্কের লগ-বেসড সম্ভাবনা প্রদান করে।
- Probability (Sigmoid Function): লজ-অডস থেকে প্রাপ্ত ফলাফলকে 0-1 এর মধ্যে রূপান্তরিত করতে sigmoid function (logistic function) ব্যবহার করা হয়।
Logistic Function:
\[
p = \frac{1}{1 + e^{-(\beta_0 + \beta_1X_1 + \beta_2X_2 + \dots)}}
\]
এটি আপনার রিটার্ন করা সম্ভাবনা (probability) প্রদান করবে।
Evaluating Model Performance:
লজিস্টিক রিগ্রেশন মডেলের পারফরম্যান্স পর্যালোচনা করার জন্য কিছু গুরুত্বপূর্ণ মেট্রিকস যেমন Confusion Matrix, Accuracy, Precision, Recall, এবং ROC Curve ব্যবহার করা হয়।
১. Confusion Matrix:
# Predicted values
predicted_values <- ifelse(predictions > 0.5, 1, 0)
# True values (from the data)
true_values <- c(1, 0) # Example true values for testing
# Create confusion matrix
table(Predicted = predicted_values, Actual = true_values)২. Accuracy:
# Accuracy calculation
accuracy <- mean(predicted_values == true_values)
print(accuracy)৩. ROC Curve:
# ROC curve plot
library(ROCR)
pred <- prediction(predictions, true_values)
perf <- performance(pred, "tpr", "fpr")
plot(perf)Conclusion:
- Logistic Regression একটি শক্তিশালী টুল যা বাইনারি আউটপুট ভেরিয়েবল প্রেডিক্ট করতে ব্যবহৃত হয়। এটি ডেটার মধ্যে সম্পর্কের আউটপুট হিসেবে সম্ভাবনা প্রদান করে।
- R এ লজিস্টিক রিগ্রেশন মডেল তৈরি করতে
glm()ফাংশন ব্যবহার করা হয় এবংfamily = binomial()আর্গুমেন্ট ব্যবহার করে বাইনারি আউটপুট নির্ধারণ করা হয়। - লজিস্টিক রিগ্রেশন মডেলটি বিভিন্ন পরিসংখ্যানিক পরীক্ষার মাধ্যমে বিশ্লেষণ করা যায়, যেমন কোইফিশিয়েন্ট মান, p-value, এবং মডেল পারফরম্যান্স।
এভাবে, Logistic Regression ব্যবহার করে বাইনারি ডেটা বিশ্লেষণ এবং প্রেডিকশন করতে পারেন।
Read more