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
pr
conté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
anova
esse 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çãoanova(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.
methods("profile")
fornecerá os métodos (S3 neste caso) associados a umprofile
objeto R ; você verá que existe um método dedicado parapolr
resultados, que você pode navegar on-line, digitandogetAnywhere("profile.polr")
no prompt R.Respostas:
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
R
exemplos 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 = PJ i Yi pij=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(Yi≤j) γiJ=1 J–1
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:γij x
Sat
low
medium
high
onde γ j ( x i ) = P ( Y i ≤ j | x i )
É assim chamado porque as probabilidades relativas de comparando x 1 e x 2 são:Y≤j x1 x2
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.
Um modelo adequado
polr
é um especialglm
, portanto, todas as suposições que são válidas para uma referência tradicional sãoglm
vá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):Você usaria o teste do qui-quadrado para isso. O valor p é obtido como:
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
predict
função (opçãotype = "probs"
:) em?polr
. Tudo o que você precisa é cuidar das covariáveis.Conforme apontado por @chl e outros,
pr
contém todas as informações necessárias para obter ICs e outras informações relacionadas à probabilidade dopolr fit
. Todos osglm
s 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.Diferente do modelo linear normal (especial
glm
), outrosglm
s 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:A estimativa dividida por seu erro padrão é o que BDR e WV chamam de valor t (estou assumindo a
MASS
convençã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.)fonte
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).lmer
nls
,,polr
eglm.nb
.A página de ajuda para
?profile.glm
deve ser útil, pois ospolr
objetos são essencialmente GLMs (mais os limites categóricos). Por fim, você pode realmente obter o código-fonte, se for de alguma utilidade, usandogetS3method('profile', 'polr')
. Uso muito essagetS3method
funçã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.pr
é umprofile.polr, profile
objeto (classe herdadaprofile
). 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ê observarpr$InflMedium
, notará que, quando "z" é 0, os outros efeitos fixos são os mesmos encontrados no ajuste original.Mais uma vez,
?plot.profile
dá 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 usandomethod='profile'
, recodificar variáveis ou executar outros diagnósticos.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.
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.Você pode testar modelos aninhados com
waldtest
elrtest
nolmtest
pacote em R. Isso é equivalente a ANOVA. A interpretação é exatamente a mesma das GLMs.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.merMod
de 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 acoeftest(house.plr)
partir dolrtest
pacote.fonte
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
fonte