Como entender a saída da função polr de R (regressão logística ordenada)?


26

Eu sou novo em R, regressão logística ordenada e polr.

A seção "Exemplos" na parte inferior da página de ajuda para polr (que se ajusta a um modelo de regressão logística ou de probit a uma resposta fatorial ordenada) mostra

options(contrasts = c("contr.treatment", "contr.poly"))
house.plr <- polr(Sat ~ Infl + Type + Cont, weights = Freq, data = housing)
pr <- profile(house.plr)
plot(pr)
pairs(pr)
  • Que informação prcontém? A página de ajuda no perfil é genérica e não fornece orientação para polr.

  • O que está plot(pr)mostrando? Eu vejo seis gráficos. Cada um tem um eixo X que é numérico, embora o rótulo seja uma variável indicadora (se parece com uma variável de entrada que é um indicador para um valor ordinal). Então o eixo Y é "tau", o que é completamente inexplicável.

  • O que está pairs(pr)mostrando? Parece um gráfico para cada par de variáveis ​​de entrada, mas, novamente, não vejo explicação dos eixos X ou Y.

  • Como entender se o modelo se encaixava bem? summary(house.plr)mostra Desvio residual 3479.149 e AIC (Critério de informação de Akaike?) de 3495.149. Isso é bom? No caso de serem úteis apenas como medidas relativas (isto é, para comparar com outro ajuste do modelo), o que é uma boa medida absoluta? O desvio residual é aproximadamente qui-quadrado distribuído? Pode-se usar "% previsto corretamente" nos dados originais ou em alguma validação cruzada? Qual é a maneira mais fácil de fazer isso?

  • Como se aplica e interpreta anovaesse modelo? Os documentos dizem "Existem métodos para as funções de ajuste de modelo padrão, incluindo previsão, resumo, vcov e anova". No entanto, a execução anova(house.plr)resulta emanova is not implemented for a single "polr" object

  • Como se interpreta os valores t para cada coeficiente? Ao contrário de alguns ajustes de modelo, não há valores de P aqui.

Sei que há muitas perguntas, mas faz sentido perguntar como um pacote ("como uso essa coisa?") Em vez de sete perguntas diferentes. Qualquer informação apreciada.


3
@dfrankow Ajuda um tanto bruta e certamente muito parcial para suas duas primeiras perguntas, mas methods("profile")fornecerá os métodos (S3 neste caso) associados a um profileobjeto R ; você verá que existe um método dedicado para polrresultados, que você pode navegar on-line, digitando getAnywhere("profile.polr")no prompt R.
chl

11
Obrigado! O código fonte é bom. A explicação seria ainda melhor. :)
dfrankow

11
Alguém me indicou "Estatística Moderna Aplicada com S", de Venables e Ripley. A Seção 7.3 possui "Um exemplo de tabela de freqüências de quatro direções" que abrange extensivamente esse modelo de casa. Reading ..
dfrankow 01/03

Na verdade, a seção é "um modelo de chances proporcionais"
dfrankow

Respostas:


17

Eu sugeriria que você olhasse livros sobre análise de dados categóricos (cf. Análise de dados categóricos de Alan Agresti, 2002) para uma melhor explicação e compreensão da regressão logística ordenada . Todas as perguntas que você faz são basicamente respondidas por alguns capítulos desses livros. Se você estiver interessado apenas em Rexemplos relacionados, a Extensão de modelos lineares em R de Julian Faraway (CRC Press, 2008) é uma ótima referência.

Antes de responder suas perguntas, a regressão logística ordenada é um caso de modelos de logit multinomiais nos quais as categorias são ordenadas. Suponhamos que temos ordenada categorias e que para o indivíduo i , com resposta ordinal Y i , P i j = P ( Y i = j ) para j = 1 , . . . , J . Com uma resposta ordenada, geralmente é mais fácil trabalhar com as probabilidades cumulativas, γ i j = PJiYipij=P(Yi=j)j=1,...,J . As probabilidades cumulativas são crescentes e invariáveis ​​para combinar categorias adjacentes. Além disso, γ i J = 1 , portanto, precisamos apenas do modelo J - 1 de probabilidades.γij=P(Yij)γiJ=1J1

Agora queremos vincular s às covariáveis x . No seu caso, tem 3 níveis ordenados: , , . Faz mais sentido tratá-los como ordenados, em vez de não-ordenados. As demais variáveis ​​são suas covariáveis. O modelo específico que você está considerando é o modelo de chances proporcionais e é matematicamente equivalente a:γijxSatlowmediumhigh

onde  γ j ( x i ) = P ( Y ij | x i )

logit γj(xi)=θjβTxi,j=1J1
where γj(xi)=P(Yij|xi)

É assim chamado porque as probabilidades relativas de comparando x 1 e x 2 são:Yjx1x2

(γj(x1)1γj(x1))/(γj(x2)1γj(x2))=exp(βT(x1x2))

Observe que a expressão acima não depende de . Obviamente, a suposição de probabilidades proporcionais precisa ser verificada para um determinado conjunto de dados.j

Agora, responderei algumas (1, 2, 4) perguntas.

Como entender se o modelo se encaixava bem? O resumo (house.plr) mostra o desvio residual 3479.149 e o AIC (critério de informação de Akaike?) de 3495.149. Isso é bom? No caso de serem úteis apenas como medidas relativas (isto é, para comparar com outro ajuste do modelo), o que é uma boa medida absoluta? O desvio residual é aproximadamente qui-quadrado distribuído? Pode-se usar "% previsto corretamente" nos dados originais ou em alguma validação cruzada? Qual é a maneira mais fácil de fazer isso?

Um modelo adequado polré um especial glm, portanto, todas as suposições que são válidas para uma referência tradicional são glmválidas aqui. Se você cuidar adequadamente dos parâmetros, poderá descobrir a distribuição. Especificamente, para testar se o modelo é bom ou não, você pode fazer um teste de qualidade do ajuste , que testa o seguinte nulo (observe que isso é sutil, principalmente você deseja rejeitar o nulo, mas aqui você não deseja rejeite-o para obter um bom ajuste):

Ho: current model is good enough 

Você usaria o teste do qui-quadrado para isso. O valor p é obtido como:

1-pchisq(deviance(house.plr),df.residual(house.plr))

Na maioria das vezes, você esperaria obter um valor p maior que 0,05 para não rejeitar o nulo para concluir que o modelo é adequado (a correção filosófica é ignorada aqui).

AIC deve ser alto para um bom ajuste ao mesmo tempo em que você não deseja ter um grande número de parâmetros. stepAICé uma boa maneira de verificar isso.

Sim, você pode definitivamente usar a validação cruzada para ver se as previsões são válidas. Veja a predictfunção (opção type = "probs":) em ?polr. Tudo o que você precisa é cuidar das covariáveis.

Que informação contém pr? A página de ajuda no perfil é genérica e não fornece orientação para polr

Conforme apontado por @chl e outros, prcontém todas as informações necessárias para obter ICs e outras informações relacionadas à probabilidade do polr fit. Todos os glms são adequados usando o método de estimativa do quadrado mínimo ponderado iterativamente para a probabilidade do log. Nesta otimização, você obtém muitas informações (consulte as referências) que serão necessárias para o cálculo da matriz de covariância de variância, IC, valor t etc. Isso inclui todas elas.

Como se interpreta os valores t para cada coeficiente? Diferentemente de alguns modelos> ajustes, não há valores de P aqui.

Diferente do modelo linear normal (especial glm), outros glms não têm a boa distribuição t para os coeficientes de regressão. Portanto, tudo que você pode obter são as estimativas de parâmetros e sua matriz de covariância de variância assintótica usando a teoria da máxima verossimilhança. Assim sendo:

Variance(β^)=(XTWX)1ϕ^

A estimativa dividida por seu erro padrão é o que BDR e WV chamam de valor t (estou assumindo a MASSconvenção aqui). É equivalente ao valor t da regressão linear normal, mas não segue uma distribuição t. Usando CLT, ele é normalmente distribuído assintoticamente. Mas eles preferem não usar esse valor aproximado (eu acho), portanto não há valores de p. (Espero não estar errado e, se estiver, espero que o BDR não esteja neste fórum. Espero ainda que alguém me corrija se eu estiver errado.)


Vou acrescentar mais
suncoolsu

11
Obrigado por isso. Eu li várias vezes. Muitas perguntas permanecem. 1. Funcionalmente em R, como testar a suposição de probabilidades proporcionais? 2. Você tem certeza de que o teste do qui-quadrado está correto? Neste exemplo, ele retorna 0, significando .. ajuste de baixa qualidade? Mas alguns dos valores de t são bastante altos (InflHigh 10.1, InflMedium 5.4, ContHigh 3.7). 3. O que os gráficos ou pares estão mostrando?
Dfrankow

Obrigado pela sua resposta extensa suncoolsu. Estou em uma situação semelhante e tenho algumas perguntas. 1. Eu também recebo 0 para cada modelo usando sua equação de teste chi-sq. 2. A página da Wikipedia na AIC diz "o modelo preferido é aquele com o valor mínimo da AIC", mas você disse: "AIC deve ser alta para um bom ajuste". Estou tentando reconciliar essas contas.
Sam Swift

@dfrankow e @Sam Swift. Sinto muito, estive um pouco ocupado escrevendo alguns papéis. Ok - se você obtiver um valor p = 0, significa que o modelo NÃO é um bom ajuste, pois o teste de qualidade do ajuste falha. Com relação ao problema da AIC, a Wikipedia e eu estamos usando uma convenção diferente para isso. Estou usando o que é usado por BDR e WV. (cf. Estendendo modelos lineares em R, pelo Dr. Julian Distante)
suncoolsu

Existem algumas perguntas dedicadas para valores de 0/1 p e interpretação da AIC que você pode achar útil: stats.stackexchange.com/questions/15223/… stats.stackexchange.com/questions/81427/…
Scott,

3

Gostei muito da conversa aqui, mas sinto que as respostas não abordaram corretamente todos os (muito bons) componentes da pergunta que você fez. A segunda metade da página de exemplo polré sobre criação de perfil. Uma boa referência técnica aqui são Venerables e Ripley, que discutem o perfil e o que ele faz. Essa é uma técnica crítica quando você sai da zona de conforto de ajustar modelos de família exponenciais com probabilidade total (GLMs regulares).

k1klmernls,, polre glm.nb.

A página de ajuda para ?profile.glmdeve ser útil, pois os polrobjetos são essencialmente GLMs (mais os limites categóricos). Por fim, você pode realmente obter o código-fonte, se for de alguma utilidade, usando getS3method('profile', 'polr'). Uso muito essa getS3methodfunção porque, embora R pareça insistir em que muitos métodos devam ser ocultados, é possível aprender surpreendentemente muito sobre implementação e métodos revisando o código.

• Que informação contém? A página de ajuda no perfil é genérica e não fornece orientação para polr.

pré um profile.polr, profileobjeto (classe herdada profile). Há uma entrada para cada covariável. O criador de perfil circula sobre cada covariável, recalcula o ajuste ideal do modelo com esse covariável fixo em uma quantidade ligeiramente diferente. A saída mostra o valor fixo da covariável medido como uma diferença "z-score" em escala do seu valor estimado e os efeitos fixos resultantes em outras covariáveis. Por exemplo, se você observar pr$InflMedium, notará que, quando "z" é 0, os outros efeitos fixos são os mesmos encontrados no ajuste original.

• O que o gráfico (pr) está mostrando? Eu vejo seis gráficos. Cada um tem um eixo X que é numérico, embora o rótulo seja uma variável indicadora (se parece com uma variável de entrada que é um indicador para um valor ordinal). Então o eixo Y é "tau", o que é completamente inexplicável.

Mais uma vez, ?plot.profiledá a descrição. O gráfico mostra aproximadamente como os coeficientes de regressão covary. tau é a diferença de escala, a pontuação z antes, portanto, o valor 0 fornece os coeficientes de ajuste ideais, representados com uma marca de escala. Você não diria que esse ajuste é tão bem comportado, mas essas "linhas" são na verdade splines. Se a probabilidade fosse de comportamento muito irregular no ajuste ideal, você observaria um comportamento estranho e imprevisível na trama. Isso seria necessário para estimar a saída usando uma estimativa de erro mais robusta (bootstrap / jackknife), calcular ICs usando method='profile', recodificar variáveis ​​ou executar outros diagnósticos.

• O que os pares (pr) estão mostrando? Parece um gráfico para cada par de variáveis ​​de entrada, mas, novamente, não vejo explicação dos eixos X ou Y.

O arquivo de ajuda diz: "O método dos pares mostra, para cada par de parâmetros xey, duas curvas que se cruzam na estimativa de probabilidade máxima, que fornece os locais dos pontos nos quais as tangentes aos contornos do perfil bivariado se tornam verticais e horizontal, respectivamente. No caso de uma probabilidade de perfil normal exatamente bivariada, essas duas curvas seriam linhas retas, fornecendo as médias condicionais de y | x e x | y, e os contornos seriam exatamente elípticos ". Basicamente, eles novamente ajudam a visualizar as elipses de confiança. Eixos não ortogonais indicam medidas altamente covariáveis, como InfMedium e InfHigh, que são intuitivamente muito relacionadas. Novamente, probabilidades irregulares levariam a imagens bastante desconcertantes aqui.

• Como entender se o modelo se encaixava bem? O resumo (house.plr) mostra o desvio residual 3479.149 e o AIC (critério de informação de Akaike?) de 3495.149. Isso é bom? No caso de serem úteis apenas como medidas relativas (isto é, para comparar com outro ajuste do modelo), o que é uma boa medida absoluta? O desvio residual é aproximadamente qui-quadrado distribuído? Pode-se usar "% previsto corretamente" nos dados originais ou em alguma validação cruzada? Qual é a maneira mais fácil de fazer isso?

Uma suposição que é boa de avaliar é a suposição de probabilidades proporcionais. Isso se reflete um pouco no teste global (que avalia a polr em relação a um modelo loglinear saturado). Uma limitação aqui é que, com grandes dados, os testes globais sempre falham. Como resultado, o uso de gráficos e estimativas de inspeção (betas) e precisão (SEs) para o modelo loglinear e ajuste de polr é uma boa idéia. Se eles discordam maciçamente, talvez algo esteja errado.

Com os resultados ordenados, é difícil definir a porcentagem de concordância. Como você escolherá um classificador com base no modelo e, se o fizer, analisará o desempenho ruim de um classificador ruim. modeé uma má escolha. Se tenho 10 logits de categoria e minha previsão é sempre apenas uma categoria desativada, talvez isso não seja algo ruim. Além disso, meu modelo pode prever corretamente uma chance de 40% de uma resposta 0, mas também 20% de 8, 9, 10. Portanto, se eu observar 9, isso é bom ou ruim? Se você precisar medir o acordo, use um kappa ponderado ou mesmo MSE. O modelo loglinear sempre produzirá o melhor acordo. Não é isso que o POLR faz.

• Como se aplica e interpreta a anova nesse modelo? Os documentos dizem "Existem métodos para as funções de ajuste de modelo padrão, incluindo previsão, resumo, vcov e anova". No entanto, executar anova (house.plr) resulta em anova não é implementado para um único objeto "polr"

Você pode testar modelos aninhados com waldteste lrtestno lmtestpacote em R. Isso é equivalente a ANOVA. A interpretação é exatamente a mesma das GLMs.

• Como interpretar os valores t para cada coeficiente? Ao contrário de alguns ajustes de modelo, não há valores de P aqui.

Novamente, diferentemente dos modelos lineares, o modelo POLR é capaz de apresentar problemas com probabilidade irregular, de modo que a inferência baseada no Hessian pode ser muito instável. É análogo ao ajuste de modelos mistos; veja, por exemplo, o arquivo confint.merModde ajuda do pacote lme4. Aqui, as avaliações feitas com o perfil mostram que a covariância é bem comportada. Os programadores teriam feito isso por padrão, exceto que o perfil pode ser computacionalmente muito intenso e, portanto, eles o deixam em suas mãos. Se você precisar ver a inferência baseada em Wald, use a coeftest(house.plr)partir do lrtestpacote.


2

Para 'testar' (ou seja, avaliar) a suposição de probabilidades proporcionais em R, você pode usar residuals.lrm () no pacote Design de Frank Harrell Jr. Se você digitar? Residuals.lrm, há um exemplo rápido de replicar como Frank Harrell recomenda avaliar a suposição de probabilidades proporcionais (ou seja, visualmente, e não por um teste de botão). As estimativas de projeto ordenaram regressões logísticas usando lrm (), que você pode substituir por polr () do MASS.

Para um exemplo mais formal de como testar visualmente a suposição de probabilidades proporcionais em R, consulte: Artigo: Modelos de Regressão de Resposta Ordinal em Ecologia Autor (es): Antoine Guisan e Frank E. Harrell Fonte: Journal of Vegetation Science, vol. 11, nº 5 (outubro de 2000), pp. 617-626


3
Agradeço sinceramente sua resposta. No entanto, o objetivo do StackExchange é fornecer respostas, não referências. Os estatísticos parecem particularmente propensos a esse problema de referência. Há algum detalhe que você possa adicionar sobre como usar residuals.lrm? Por exemplo, um comando de exemplo e um exemplo de interpretação do gráfico para o exemplo house.plr?
dfrankow

11
Atualização no site do autor: "O pacote Design agora está obsoleto. Usuários R devem usar o pacote rms". Mark, sua resposta foi muito útil para mim.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.