क्रमिक और श्रेणीबद्ध चर की भविष्यवाणी के लिए अलग-अलग विधियां हैं।
जो मुझे समझ नहीं आ रहा है, वह यह है कि यह अंतर कैसे मायने रखता है। क्या एक सरल उदाहरण है जो स्पष्ट कर सकता है कि यदि मैं आदेश छोड़ता हूं तो क्या गलत है? किन परिस्थितियों में इससे कोई फर्क नहीं पड़ता? उदाहरण के लिए, यदि स्वतंत्र चर सभी श्रेणीगत / क्रमिक हैं, तो क्या कोई अंतर होगा?
यह संबंधित प्रश्न स्वतंत्र चर के प्रकार पर केंद्रित है। यहाँ मैं परिणाम चर के बारे में पूछ रहा हूँ।
संपादित करें: मैं इस बिंदु को देखता हूं कि ऑर्डर संरचना का उपयोग करने से मॉडल मापदंडों की संख्या कम हो जाती है, लेकिन मैं अभी भी वास्तव में आश्वस्त नहीं हूं।
यहाँ एक उदाहरण दिया गया है (लॉजिस्टिक लॉगरिज्म के लिए एक परिचय से लिया गया जहाँ तक मैं देख सकता हूँ कि ऑर्डिनल लॉजिस्टिक रिग्रेशन बहुराष्ट्रीय लॉजिस्टिक रिग्रेशन से बेहतर प्रदर्शन नहीं कर सकता है:
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 में से) के वितरण को दर्शाता है।
Edit2: जब मैं स्कोरिंग विधि के रूप में निम्नलिखित का उपयोग करता हूं
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)
लेकिन इससे कोई फर्क नहीं पड़ता। यदि आप सटीकता को देखते हैं, तो दोनों बहुत समान हैं। हालांकि, पूरी तरह से भरोसा करने के लिए सटीकता एक अच्छी मीट्रिक नहीं है।