আপনার ব্যবহৃত কোডটি glm
ফাংশনটি ব্যবহার করে একটি লজিস্টিক রিগ্রেশন মডেলটি অনুমান করে । আপনি ডেটা অন্তর্ভুক্ত করেননি, তাই আমি কিছুটা তৈরি করব।
set.seed(1234)
mydat <- data.frame(
won=as.factor(sample(c(0, 1), 250, replace=TRUE)),
bid=runif(250, min=0, max=1000)
)
mod1 <- glm(won~bid, data=mydat, family=binomial(link="logit"))
একটি লজিস্টিক রিগ্রেশন মডেল বাইনারি প্রতিক্রিয়া পরিবর্তনশীল এবং এই ক্ষেত্রে, একটানা এক ভবিষ্যদ্বাণীকের মধ্যে সম্পর্কের মডেল। ফলাফলটি ভবিষ্যদ্বাণীকের সাথে লিনিয়ার সম্পর্ক হিসাবে লজিট-রূপান্তরিত সম্ভাবনা ability আপনার ক্ষেত্রে, ফলাফলটি জুয়ারিতে জয়ী হওয়া বা না জয়ের সাথে সম্পর্কিত বাইনারি প্রতিক্রিয়া এবং এটি বাজির মূল্য দ্বারা ভবিষ্যদ্বাণী করা হচ্ছে। এর থেকে গুণফলগুলি লগড প্রতিক্রিয়াগুলিতে mod1
দেওয়া হয় (যা ব্যাখ্যা করা কঠিন), মতে:
logit ( p ) = লগ( পি( 1 - পি )) = β0+ + β1এক্স1
লগ করা প্রতিকূলতাকে সম্ভাব্যতায় রূপান্তর করতে আমরা উপরেরটি অনুবাদ করতে পারি
পি = এক্সপ্রেস( β0+ + β1এক্স1)( 1 +) এক্সপ্রেস( β0+ + β1এক্স1) )
প্লট সেট আপ করতে আপনি এই তথ্যটি ব্যবহার করতে পারেন। প্রথমত, আপনার পূর্বাভাসক চলকের একটি ব্যাপ্তি প্রয়োজন:
plotdat <- data.frame(bid=(0:1000))
তারপরে ব্যবহার করে predict
, আপনি আপনার মডেলের উপর ভিত্তি করে পূর্বাভাস পেতে পারেন
preddat <- predict(mod1, newdata=plotdat, se.fit=TRUE)
নোট করুন যে লাগানো মানগুলি এর মাধ্যমেও পাওয়া যেতে পারে
mod1$fitted
নির্দিষ্ট করে se.fit=TRUE
, আপনি প্রতিটি লাগানো মানের সাথে সম্পর্কিত মানক ত্রুটিটি পান। ফলস্বরূপ data.frame
নিম্নলিখিত উপাদানগুলির সাথে একটি ম্যাট্রিক্স রয়েছে: লাগানো পূর্বাভাস ( fit
), আনুমানিক স্ট্যান্ডার্ড ত্রুটিগুলি ( se.fit
), এবং একটি স্কেলার প্রমিতের ত্রুটিগুলি গণনা করতে ব্যবহৃত বিস্তারের বর্গমূল প্রদান করে ( residual.scale
)। একটি দ্বিপদ logit ক্ষেত্রে, মান হতে হবে 1 (আপনি লিখে দেখতে পারেন ব্যক্তিদের কোন preddat$residual.scale
মধ্যে R
)। আপনি এখন পর্যন্ত যা গণনা করেছেন তার উদাহরণ দেখতে চাইলে আপনি টাইপ করতে পারেন head(data.frame(preddat))
।
পরবর্তী পদক্ষেপটি প্লট স্থাপন করা হয়। আমি প্রথমে পরামিতিগুলির সাথে একটি ফাঁকা প্লটিং অঞ্চল স্থাপন করতে চাই:
with(mydat, plot(bid, won, type="n",
ylim=c(0, 1), ylab="Probability of winning", xlab="Bid"))
লাগানো সম্ভাবনার গণনা কীভাবে করা যায় তা এখন আপনি দেখতে পারবেন। উপরের দ্বিতীয় সূত্র অনুসরণ করে আপনি লাগানো সম্ভাবনার সাথে সম্পর্কিত লাইনটি আঁকতে পারেন। এটি ব্যবহার করে preddat data.frame
আপনি লাগানো মানগুলিকে সম্ভাব্যতায় রূপান্তর করতে পারেন এবং এটি আপনার পূর্বাভাসক ভেরিয়েবলের মানগুলির বিরুদ্ধে লাইন প্লট করতে পারেন।
with(preddat, lines(0:1000, exp(fit)/(1+exp(fit)), col="blue"))
পরিশেষে, আপনার প্রশ্নের উত্তর দিন, +/- 1.96
মানক ত্রুটির সাথে লাগানো মানগুলির সম্ভাবনা গণনা করে আত্মবিশ্বাসের অন্তরগুলি প্লটে যুক্ত করা যেতে পারে :
with(preddat, lines(0:1000, exp(fit+1.96*se.fit)/(1+exp(fit+1.96*se.fit)), lty=2))
with(preddat, lines(0:1000, exp(fit-1.96*se.fit)/(1+exp(fit-1.96*se.fit)), lty=2))
ফলস্বরূপ প্লট (এলোমেলোভাবে উত্পন্ন ডেটা থেকে) এর মতো কিছু দেখতে পাওয়া উচিত:
অভিযানের জন্য, এখানে একটি কোডের মধ্যে সমস্ত কোড:
set.seed(1234)
mydat <- data.frame(
won=as.factor(sample(c(0, 1), 250, replace=TRUE)),
bid=runif(250, min=0, max=1000)
)
mod1 <- glm(won~bid, data=mydat, family=binomial(link="logit"))
plotdat <- data.frame(bid=(0:1000))
preddat <- predict(mod1, newdata=plotdat, se.fit=TRUE)
with(mydat, plot(bid, won, type="n",
ylim=c(0, 1), ylab="Probability of winning", xlab="Bid"))
with(preddat, lines(0:1000, exp(fit)/(1+exp(fit)), col="blue"))
with(preddat, lines(0:1000, exp(fit+1.96*se.fit)/(1+exp(fit+1.96*se.fit)), lty=2))
with(preddat, lines(0:1000, exp(fit-1.96*se.fit)/(1+exp(fit-1.96*se.fit)), lty=2))
(দ্রষ্টব্য: এটি stats.stackexchange এর সাথে আরও প্রাসঙ্গিক করার প্রয়াসে এটি একটি ভারী সম্পাদিত উত্তর))