O que ganho se considerar o resultado ordinal em vez de categórico?

12

Existem diferentes métodos para previsão de variáveis ​​ordinais e categóricas.

O que eu não entendo é como essa distinção importa. Existe um exemplo simples que pode esclarecer o que dá errado se eu cancelar o pedido? Sob que circunstâncias isso não importa? Por exemplo, se as variáveis ​​independentes também forem categóricas / ordinais, haveria alguma diferença?

Esta questão relacionada se concentra no tipo de variáveis ​​independentes. Aqui estou perguntando sobre variáveis ​​de resultado.

Editar: vejo que a utilização da estrutura da ordem reduz o número de parâmetros do modelo, mas ainda não estou realmente convencido.

Aqui está um exemplo (retirado de uma introdução à regressão logística ordenada, na qual, até onde eu posso ver, a regressão logística ordinal não apresenta um desempenho melhor que a regressão logística multinomial:

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))

que mostra a distribuição do número de palpites corretos (de 40) de ambos os algoritmos.

polr_vs_multinom

Edit2: Quando eu uso como método de pontuação, o seguinte

return(sum(abs(as.numeric(pred)-as.numeric(test_data$apply)))

e penalizar previsões "muito erradas", o polr ainda parece ruim, ou seja, o enredo acima não muda muito.

Karsten W.
fonte
1
Seu exemplo usa uma regra de pontuação imprópria descontínua, que geralmente não é uma boa base para comparar conjuntos de previsões (é arbitrário e carece de força e precisão).
precisa
Supus que você talvez precise impor a variável de saída como um ordered factor, o que melhoraria os resultados: gradapply$apply <-factor(gradapply$apply, levels= c('unlikely', 'somewhat likely', 'very likely') , ordered = TRUE)mas não faz diferença. Se você observar a precisão, os dois são muito parecidos. A precisão não é uma boa métrica em que se possa confiar apenas.
Zhubarb

Respostas:

10

Existem importantes ganhos de potência e precisão ao tratar Y como ordinal, quando apropriado. Isso decorre do número muito menor de parâmetros no modelo (por um fator de k em que k é um a menos do que o número de categorias de Y). Existem vários modelos ordinais. Os mais comumente usados ​​são os modelos logísticos ordinais de chances proporcionais e razão de continuação.

Frank Harrell
fonte
1
+1 A redução nos parâmetros também significa que os modelos ordinais podem ser muito mais fáceis de ajustar.
JMS
4

Se você ignorar a natureza ordenada das variáveis, os métodos apropriados ainda fornecerão uma análise correta, mas a vantagem de usar métodos para dados ordenados é que eles fornecem mais informações sobre a ordem e magnitude de variáveis ​​significativas.

Murray
fonte
Não consigo ver quais informações sobre o pedido são fornecidas.
precisa
1
Suponha que uma variável tenha três níveis, baixo, médio, alto. Uma análise ordinal pode sugerir nenhuma diferença entre baixa e média, mas significância para alta. A estimativa de parâmetro pode fornecer informações como 'quando a variável X é alta, o efeito é estimado em 2,5 vezes maior que baixo ou médio' - daí direção e magnitude.
Murray
2

Se você deseja modelar os dados e a variável categórica dependente não tiver ordem (nominal), deverá usar um modelo de logit multinomial. Se a variável dependente tiver uma ordem (ordinal), você poderá usar um modelo de logit cumulativo (modelo de chances proporcionais).

Para mim, pessoalmente, acho os resultados muito mais fáceis de interpretar para um modelo de chances proporcionais em comparação com um modelo multinomial, especialmente quando você deseja relatar os resultados para alguém sem conhecimento estatístico.

Estes não são os únicos modelos que você pode usar, mas são muito típicos.

Glen
fonte