লজিস্টিক রিগ্রেশন প্রেডিকশনের আউটপুট


14

আমি নিম্নলিখিত কোড ব্যবহার করে একটি লজিস্টিক রিগ্রেশন তৈরি করেছি:

full.model.f = lm(Ft_45 ~ ., LOG_D)
base.model.f = lm(Ft_45 ~ IP_util_E2pl_m02_flg)
step(base.model.f, scope=list(upper=full.model.f, lower=~1),
     direction="forward", trace=FALSE)

তারপরে আমি চূড়ান্ত মডেল তৈরি করতে আউটপুটটি ব্যবহার করেছি:

final.model.f = lm(Ft_45 ~ IP_util_E2pl_m02_flg + IP_util_E2_m02_flg + 
                           AE_NumVisit1_flg + OP_NumVisit1_m01_flg + IP_TotLoS_m02 + 
                           Ft1_45 + IP_util_E1_m05_flg + IP_TotPrNonElecLoS_m02 + 
                           IP_util_E2pl_m03_flg + LTC_coding + OP_NumVisit0105_m03_flg +
                           OP_NumVisit11pl_m03_flg + AE_ArrAmb_m02_flg)

তারপরে আমি পূর্বাভাস ফাংশনটি ব্যবহার করে বিভিন্ন সেট ডেটার ফলাফলের পূর্বাভাস দিয়েছি:

log.pred.f.v <- predict(final.model.f, newdata=LOG_V)

আমি একটি আকর্ষণীয় আরওসি বক্ররেখা ব্যবহার করতে সক্ষম হয়েছি এবং সংবেদনশীলতা এবং নির্দিষ্টতা প্রতিষ্ঠার জন্য একটি টেবিল তৈরি করেছি যা আমাকে প্রত্যাশা করবে প্রতিক্রিয়া জানায় gives

তবে আমি যা করার চেষ্টা করছি তা হ'ল ফিট_45 হওয়ার সম্ভাবনাটি 1-এর প্রতিটি সারির জন্য এটি স্থাপন করা 1 যদি আমি লগ.প্রেড.এফভি এর ফলাফল দেখি তবে উদাহরণস্বরূপ:

1 -0.171739593    
2 -0.049905948    
3 0.141146419    
4 0.11615669    
5 0.07342591    
6 0.093054334    
7 0.957164383    
8 0.098415639    
.
.
.
104 0.196368229    
105 1.045208447    
106 1.05499112

আমি যা করছি তার উপর কেবলমাত্র একটি অস্থায়ী উপলব্ধি থাকাকালীন আমি যে 1 টি মানটিকে নেতিবাচক এবং উচ্চতর ব্যাখ্যা করতে হবে তা বোঝার জন্য সংগ্রাম করছি যেহেতু আমি সম্ভাবনা 0 এবং 1 এর মধ্যে হওয়ার আশা করব।

সুতরাং আমার প্রশ্নটি হ'ল আমি কেবল একটি পদক্ষেপ মিস করছি যেখানে আমার আউটপুটটি রূপান্তর করতে হবে বা আমি পুরোপুরি ভুল হয়ে গিয়েছি। আপনি যে অফার করতে সক্ষম হবেন তার জন্য আগাম ধন্যবাদ Thank

উত্তর:


23

প্রথমত, দেখে মনে হচ্ছে আপনি কোনও নিয়মিত লিনিয়ার রিগ্রেশন মডেল তৈরি করেছেন, লজিস্টিক রিগ্রেশন মডেল নয়। একটি লজিস্টিক রিগ্রেশন মডেল নির্মান করার জন্য, আপনাকে ব্যবহার করতে হবে glm()সঙ্গে family="binomial" , না lm()

x1,x2x3y

logit <- glm(y~x1+x2+x3,family="binomial")

β0,β1,β2β3

আপনি যদি তা করেন তবে predict(logit)আর গণনা করে ফিরে আসবে b0 + b1*x1 + b2*x2 + b3*x3

y=log(p1p)=β0+β1x1+β2x2+β3x3

p

আর-তে আপনি এরকম কিছু করতে পারেন:

pred <- predict(logit,newdata=data) #gives you b0 + b1x1 + b2x2 + b3x3
probs <- exp(pred)/(1+exp(pred)) #gives you probability that y=1 for each observation

আপনাকে অনেক ধন্যবাদ, প্রথমত আমার কোড সংশোধন করার জন্য এবং দ্বিতীয়ত আর-তে সম্ভাবনাগুলি কীভাবে পাবেন তা ব্যাখ্যা করার জন্য। আমি এটিকে একবার দিয়েছি এবং এটি পুরোপুরি কার্যকরভাবে কাজ করে। আমি যদি আমি কয়েক সপ্তাহ আগে জিজ্ঞাসা ছিল !!
সেবিবি 4'15

2
probs <- exp(predict(logit, type = "response" , newdata=data)কমপক্ষে `প্রোব <- 1 / (1 + এক্সপ্রেস (-প্রেড)) এর সাথে বা আরও খাটো করা যায়
স্নোরাম

11

এর ডকুমেন্টেশনটি দেখে predict.glmমনে হচ্ছে predictকলটিতে অতিরিক্ত প্যারামিটার ব্যবহার করার মতোই সহজ :

 type = "response"

ডকুমেন্টেশন দেখুন:

প্রকার - পূর্বাভাসের ধরণের প্রয়োজন। ডিফল্ট লিনিয়ার পূর্বাভাসকারীদের স্কেল হয়; বিকল্প "প্রতিক্রিয়া" প্রতিক্রিয়া ভেরিয়েবলের স্কেলে। সুতরাং একটি ডিফল্ট দ্বিপদী মডেলের জন্য ডিফল্ট পূর্বাভাসগুলি লগ-প্রতিক্রিয়া (লগিট স্কেলে সম্ভাব্যতা) এবং = "প্রতিক্রিয়া" টাইপ করা পূর্বাভাস সম্ভাব্যতা দেয়। "শর্তাবলী" বিকল্পটি লিনিয়ার প্রেডিক্টর স্কেলের মডেল সূত্রে প্রতিটি পদটির উপযুক্ত মানগুলি প্রদান করে একটি ম্যাট্রিক্স প্রদান করে। এই যুক্তির মান সংক্ষিপ্ত করা যেতে পারে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.