Como executo a análise de Regressão Logística Ordinal em R com valores numéricos / categóricos?

17

Dados básicos : Eu tenho ~ 1.000 pessoas marcadas com avaliações: '1,' [bom] '2,' [meio] ou '3' [ruim] - esses são os valores que estou tentando prever para as pessoas no futuro . Além disso, tenho algumas informações demográficas: gênero (categórico: M / F), idade (numérico: 17-80) e raça (categórica: preto / caucasiano / latino).

Eu tenho principalmente quatro perguntas:

  1. Inicialmente, eu estava tentando executar o conjunto de dados descrito acima como uma análise de regressão múltipla. Mas eu aprendi recentemente que, como meu dependente é um fator ordenado e não uma variável contínua, devo usar a regressão logística ordinal para algo assim. Eu estava usando inicialmente algo comomod <- lm(assessment ~ age + gender + race, data = dataset) : alguém pode me apontar na direção certa?

  2. A partir daí, supondo que eu receba coeficientes com os quais me sinto confortável, entendo como conectar apenas valores numéricos para x1, x2 etc. - mas como lidaria com a raça, por exemplo, onde há várias respostas: preto / caucasiano / latino? Portanto, se ele me diz que o coeficiente caucasiano é 0,289 e alguém que estou tentando prever é caucasiano, como faço para reconectá-lo, pois o valor não é numérico?

  3. Eu também tenho valores aleatórios que estão faltando - alguns para raça, outros para sexo, etc. Tenho que fazer algo adicional para garantir que isso não incline nada? (Observei quando meu conjunto de dados é carregado no R-Studio, quando os dados ausentes são carregados como NA, R diz algo como (162 observations deleted due to missingness)- mas se eles são carregados como espaços em branco, isso não faz nada.)

  4. Supondo que tudo isso funcione e que eu tenha novos dados com sexo, idade e raça que eu quero prever - existe uma maneira mais fácil no R de executar tudo isso por qualquer que seja a minha fórmula com novos coeficientes, em vez de fazê-lo manualmente? (Se esta pergunta não for apropriada aqui, posso levá-la de volta ao fórum R.)

Ryan
fonte

Respostas:

16

Aqui estão algumas informações que podem direcioná-lo na direção certa.

Em relação aos seus dados, o que você tem é uma resposta com várias categorias e, sempre que você estiver tentando modelar uma resposta que é categórica, você está certo em tentar usar algum tipo de modelo linear generalizado (GLM). No seu caso, você tem informações adicionais que devem ser levadas em consideração em relação à sua resposta e que seus níveis de resposta têm uma ordem natural boa> média> ruim, observe como isso é diferente de tentar modelar uma resposta, como o balão de cor que alguém é provável que compre (vermelho / azul / verde), esses valores não têm pedidos naturais. Ao fazer esse tipo de modelo com uma resposta ordenada, você pode considerar o uso de um modelo de chances proporcionais.

http://en.wikipedia.org/wiki/Ordered_logit

Eu não o usei, mas polr()é provável que a função no pacote MASS seja de alguma utilidade; em alternativa, usei a lrm()função no pacote rms para fazer tipos semelhantes de análise e achei bastante útil. Se você carregar esses pacotes, use ?polrou ?lrmpara obter as informações da função.

Tudo bem antecedentes, sobre as suas perguntas:

  1. Isso deve ser abordado acima, confira esses pacotes / funções e leia os modelos de regressão logística ordinal e de probabilidades proporcionais

  2. Sempre que houver uma covariável categórica (Raça / Sexo / Cor do cabelo), você deseja tratá-los como 'fatores' na sua codificação R para modelá-los adequadamente. É importante saber o que é um fator e como eles são tratados, mas essencialmente você trata cada categoria como um nível separado e depois os modela de maneira apropriada. Basta ler sobre os fatores nos modelos e você poderá descobrir o que está acontecendo. Lembre-se de que tratar variáveis ​​categóricas como fatores não é exclusivo dos modelos GLM ou dos modelos de probabilidades proporcionais, mas geralmente é como todos os modelos lidam com variáveis ​​categóricas. http://www.stat.berkeley.edu/classes/s133/factors.html

  3. Às vezes, os valores ausentes podem ser um aborrecimento, mas se você estiver fazendo uma análise bastante básica, provavelmente será seguro remover linhas de dados que contenham valores ausentes (isso nem sempre é verdade, mas com base no seu nível de experiência atual). supondo que você não precise se preocupar com as especificidades de quando e como lidar com os valores ausentes). De fato, isso é praticamente o que R faz. Se você tiver um dado que está usando para modelar, se estiver faltando informações seguidas para sua resposta ou qualquer covariável no modelo R, apenas excluirá esses dados (este é o aviso que você vê). Obviamente, se você estiver excluindo uma grande proporção de seus dados devido à falta, seus resultados poderão ser tendenciosos e provavelmente é bom tentar obter mais informações sobre por que existem tantos valores ausentes, mas se você ' faltando 162 observações em 10.000 linhas de dados, eu não iria suar muito. Você pode pesquisar sobre métodos para lidar com dados ausentes, se estiver interessado em mais detalhes.

  4. Quase todos os objetos R modelo ( lm, glm, lrm, ...) terá um associado predict()função que lhe permitirá calcular os valores previstos para o conjunto de dados de modelagem atual e, adicionalmente, para outro conjunto de dados que você deseja prever um resultado para. Basta pesquisar ?predict.glmou ?predict.lmtentar obter mais informações sobre o tipo de modelo com o qual você deseja trabalhar. Isso é algo muito típico que as pessoas desejam fazer com os modelos, portanto, tenha certeza de que existem algumas funções e métodos integrados que devem tornar isso relativamente simples.

Boa sorte!

Steve Reno
fonte
2
  1. Sim, o logit ou probit ordenado seria por onde começar. Aqui está um tutorial sobre o logit ordenado que usa R. Outras perguntas sobre o CV provavelmente podem ajudá-lo com qualquer problema - tente as tags 'logit', 'probit' e 'ordinal'.

  2. Uma abordagem padrão para lidar com uma variável independente categórica com k valores é codificá-lo como k-1valores binários. Isso é explicado mais detalhadamente aqui , mas em resumo: o efeito de uma categoria é incluído na interceptação e os coeficientes são ajustados às demais categorias. No seu exemplo, haveria uma variável dummy caucasianque seria codificada como 1 para um respondente caucasiano, 0 caso contrário.

  3. Lidar com dados ausentes depende muito do problema em questão e, sim, como você lida com dados ausentes pode apresentar viés. Este trecho do livro descreve bem quatro mecanismos que podem produzir dados ausentes, o que deve ajudá-lo a considerar o possível viés em seu próprio problema. (Em particular, seção 25.1, p. 530.)

  4. Muitos pacotes de modelagem têm uma predictfunção de algum tipo e, de fato, o primeiro tutorial vinculado acima inclui uma demonstração.

Sean Easter
fonte
Muito obrigado! Acompanhamento rápido do item 2: Essa foi minha suposição básica - mas qual é o código é que existem mais de duas variáveis? Por exemplo, caucasiano, preto, latino.
21713 Ryan
Bem vindo! Nesse exemplo, você escolheria uma categoria para incluir na interceptação, digamos latino, e manequins para as outras duas. Um valor 1 para o caucasianmanequim indica um respondente caucasiano, semelhante para a blackvariável do manequim. Um valor 0 para ambos indica um respondente latino. Faz sentido?
Sean Páscoa
Portanto, devo apenas alterar o conjunto de dados de uma coluna com várias respostas ('preto', 'caucasiano' e 'latino') para uma coluna 'preta' com 1s e 0s, uma coluna 'caucasiana' com 1s e 0s e uma coluna 'latino' com 1s e 0s?
Ryan
Essa é uma abordagem que funcionará bem. A única diferença de usar duas colunas é como você interpreta a interceptação. Você pode fazer isso manualmente, mas acredito que os fatores em R podem lidar com isso para você. Experimentar isso - ele usa fatores com um exemplo semelhante. Felicidades!
23819 Easter Sean
1
O link para o tutorial está quebrado. Se alguém puder consertar isso, seria ótimo!
Dan Hicks