অর্ডিনাল এবং শ্রেণিবদ্ধ ভেরিয়েবলগুলির পূর্বাভাস দেওয়ার জন্য বিভিন্ন পদ্ধতি রয়েছে।
আমি যা বুঝতে পারি না, তা এই পার্থক্যটি কীভাবে গুরুত্বপূর্ণ। এমন কোনও সরল উদাহরণ রয়েছে যা আমি আদেশটি ফেলে দিলে কী ভুল হয় তা পরিষ্কার করে দিতে পারে? কোন পরিস্থিতিতে এটি বিবেচনা করে না? উদাহরণস্বরূপ, যদি স্বাধীন ভেরিয়েবলগুলি সমস্ত শ্রেণীবদ্ধ / অর্ডিনাল হয়, তবে কি কোনও পার্থক্য থাকবে?
এই সম্পর্কিত প্রশ্নটি স্বাধীন ভেরিয়েবলের ধরণের উপর দৃষ্টি নিবদ্ধ করে। এখানে আমি ফলাফল ভেরিয়েবল সম্পর্কে জিজ্ঞাসা করছি।
সম্পাদনা: আমি বিন্দুটি দেখতে পাচ্ছি যে অর্ডার কাঠামোটি ব্যবহার করা হলে মডেল পরামিতিগুলির সংখ্যা হ্রাস হয়, তবে আমি এখনও সত্যই নিশ্চিত হতে পারি না।
এখানে একটি উদাহরণ রয়েছে ( অর্ডারযুক্ত লজিস্টিক রিগ্রেশনের একটি ভূমিকা থেকে নেওয়া যেখানে আমি যতদূর দেখতে পাচ্ছি সাধারণ লজিস্টিক রিগ্রেশন মাল্টিনোমিয়াল লজিস্টিক রিগ্রেশনের চেয়ে ভাল সম্পাদন করে না:
library(nnet)
library(MASS)
gradapply <- read.csv(url("http://www.ats.ucla.edu/stat/r/dae/ologit.csv"), colClasses=c("factor", "factor", "factor", "numeric"))
ordered_result <- function() {
train_rows <- sample(nrow(gradapply), round(nrow(gradapply)*0.9))
train_data <- gradapply[train_rows,]
test_data <- gradapply[setdiff(1:nrow(gradapply), train_rows),]
m <- polr(apply~pared+gpa, data=train_data)
pred <- predict(m, test_data)
return(sum(pred==test_data$apply))
}
multinomial_result <- function() {
train_rows <- sample(nrow(gradapply), round(nrow(gradapply)*0.9))
train_data <- gradapply[train_rows,]
test_data <- gradapply[setdiff(1:nrow(gradapply), train_rows),]
m <- multinom(apply~pared+gpa, data=train_data)
pred <- predict(m, test_data)
return(sum(pred==test_data$apply))
}
n <- 100
polr_res <- replicate(n, ordered_result())
multinom_res <- replicate(n, multinomial_result())
boxplot(data.frame(polr=polr_res, multinom=multinom_res))
যা উভয় অ্যালগরিদমের সঠিক অনুমানের সংখ্যা (40 এর মধ্যে) বিতরণ দেখায়।
সম্পাদনা 2: যখন আমি স্কোরিং পদ্ধতি হিসাবে নিম্নলিখিতটি ব্যবহার করি
return(sum(abs(as.numeric(pred)-as.numeric(test_data$apply)))
এবং "খুব ভুল" পূর্বাভাসকে শাস্তি দেওয়া, পোলার এখনও খারাপ দেখাচ্ছে, যেমন উপরের প্লটটি খুব বেশি পরিবর্তন হয় না।
ordered factor
, ফলস্বরূপ উন্নতি ঘটবে: gradapply$apply <-factor(gradapply$apply, levels= c('unlikely', 'somewhat likely', 'very likely') , ordered = TRUE)
তবে এতে কোনও পার্থক্য নেই। আপনি যদি নির্ভুলতার দিকে তাকান তবে দু'জনের মধ্যে বেশ মিল রয়েছে। যদিও পুরোপুরি নির্ভর করার জন্য নির্ভুলতা কোনও ভাল মেট্রিক নয়।