Posso usar algoritmos glm para fazer uma regressão logística multinomial?

14

Estou usando o spotfire (S ++) para análise estatística no meu projeto e preciso executar a regressão logística multinomial para um grande conjunto de dados. Eu sei que o melhor algoritmo teria sido mlogit, mas infelizmente isso não está disponível no s ++. No entanto, eu tenho uma opção de usar o algoritmo glm para esta regressão. Quero esclarecer duas coisas aqui:

1.Seu entendimento está correto de que o glm também pode ser usado para executar Regressão Logística Multinomial?

  1. Se a resposta da pergunta anterior for sim, então quais parâmetros devem ser usados ​​no glm algo?

Obrigado,

Raghvendra
fonte

Respostas:

9

Sim, com um Poisson GLM (modelo linear de log), você pode ajustar modelos multinomiais. Portanto, os modelos multinacionais de logística ou Poisson log linear são equivalentes.

Você precisa ver as contagens aleatórias yij como variáveis ​​aleatórias Poisson com médias e especificar o seguinte modelo log-linear a seguirμij

log(μij)=o+pi+cj+xiβj

Para obter um modelo de logon multinomial, os parâmetros são:

Um parâmetro para cada observação multinomial, por exemplo, indivíduos ou grupo. Isso garante a reprodução exata dos denominadores multinomiais e, na verdade, estabelece a equivalência de Poisson e do modelo multinomial. Eles são fixos na probabilidade multinomial, mas aleatórios na probabilidade de Poisson.pi

Um parâmetro para cada categoria de resposta. Dessa forma, as contagens podem ser diferentes para cada categoria de resposta e as margens podem não ser uniformes.cj

O que realmente interessa são os termos de interação que representam os efeitos de nas chances de logaritmo da resposta .x i jxiβjxij

As probabilidades de log podem ser simplesmente calculadas por . São as probabilidades logarítmicas de que a observação i cairá na categoria de resposta j em relação à categoria de resposta .klog(μij/μik)=(cjck)+xi(βjβk)k

Em seguida, os parâmetros do modelo logit multinominal (denotados em letras latinas) pode ser obtido como diferenças entre os parâmetros do modelo de log-linear correspondente, ou seja, e .b j = β j - β kaj=αjαkbj=βjβk

Momo
fonte
Obrigado Momo. Isso é realmente útil. Meu software oferece a opção de escolher Família como "possion" e Vincular como "log" enquanto executa o alogoritmo GLM. Então eu acho que é exatamente o que é necessário aqui.
Raghvendra
7

Sim, você pode e, de fato, é exatamente isso que o pacote R GLMNET faz para a regressão logística multinomial. Escrevendo a função de probabilidade do log como:

LogL=icniclog(pic)

Onde denota observações indica as categorias multinomiais é a contagem observada para a observação na categoria . As observações são definidas por suas combinações covariáveis ​​únicas - ou, alternativamente, podemos permitir duplicatas e definir cada para que tenhamos dados "binários" categóricos (.... não sabemos o que é o plural de binário). ...) Para regressão logística, as probabilidades são definidas como:c n i c i c n i c = 1icnicicnic=1

pic=exp(xiTβc)cexp(xiTβc)

Essa é uma parametrização abaixo da classificação completa e pode ser útil se você estiver usando probabilidade penalizada (como GLMNET). Em princípio, poderíamos usar IRLS / newton rhapson na matriz beta completa ; no entanto, você acaba com matrizes de peso não diagonais. Como alternativa, podemos otimizar o "estilo Gibbs", corrigindo todas as categorias betas, exceto uma, e otimizando apenas sobre essa categoria. Em seguida, prossiga para a próxima categoria e assim por diante. Você pode ver isso porque as probabilidades têm a forma(β1,,βC)

pic=B

pic=exp(xiTβc)exp(xiTβc)+A where Aβc=0
pic=Bexp(xiTβc)+A where Bβc=0

Que a expansão quadrática sobre terá a mesma forma da regressão logística, mas com os pesos do IRLS calculados de maneira diferente - embora ainda tenhamos na atualização usual da versão beta.βcWii,c=nicpic(1pic)(XTWX)1XTWY

probabilityislogic
fonte
Estou tentando implementar a regressão logística multinomial usando a variante IRLS QR Newton. O código funciona para outros modelos GLM, mas não conseguiu fazer o mlogit funcionar. Será que o ser o Jacobian da função softmax o que permitiria me apenas para calcular o Cholesky uma vez por iteração em vez de vezes para resolver para cada conjunto de pesos por resultado? Wk
José Bayoán Santiago Calderón
Dado que não seria diagonal, não seria bem dimensionado com grande número de observações, não? Se fosse "estilo Gibbs", a subtração dos parâmetros da categoria base da matriz seria feita antes ou depois da previsão? β
José Bayoán Santiago Calderón
Quando você fala sobre "cholesky uma vez" vs "cholesky k times", observe que as matrizes são de dimensões diferentes - se houver colunas em , o "once" é para uma matriz com tamanho e "k times" é para uma matriz dimensionadapXpkp
probabilityislogic