Regressão logística ponderada por caso


9

Estou analisando alguns problemas de regressão logística. ("regular" e "condicional").

Idealmente, eu gostaria de ponderar cada um dos casos de entrada para que o glm se concentre mais em prever os casos de maior peso corretamente, às custas de possivelmente classificar incorretamente os casos de menor peso.

Certamente isso já foi feito antes. Alguém pode me indicar uma literatura relevante (ou sugerir uma função de probabilidade modificada).

Obrigado!


11
Você está assumindo que a classificação é o objetivo, em oposição à previsão. Para uma estimativa ideal das probabilidades, você não precisa pesar novamente nada. "Negativos falsos" e "falsos positivos" ocorrem apenas com escolhas forçadas, e geralmente ninguém está forçando uma escolha binária pura.
precisa

@ Frank Você faz um bom argumento. Por fim, o objetivo deste projeto é prever o resultado de outros eventos. (Então, acho que pode ser considerado um gosto de aprendizado de máquina com dados de treinamento.) Alguns resultados são mais "importantes" do que outros, então eu estava procurando uma maneira de ponderá-los adequadamente. A sugestão de Nick para a função de probabilidade faz sentido e deve ser bastante trivial para implementar no código.
Noah

11
Parece que você precisa exatamente de um modelo de probabilidade sem a necessidade de pesos.
precisa

11
Direita; conecte a função de custo e use a probabilidade prevista e você terá uma decisão ideal.
Frank Harrell

11
Com um modelo de probabilidade bem calibrado, não há "erros", apenas a aleatoriedade que não pode ser prevista. As decisões ideais são uma função da probabilidade prevista e da função de custo para a tomada de várias decisões.
Frank Harrell

Respostas:


3

glmmantém um parâmetro weightsexatamente para esse fim. Você fornece a ele um vetor de números em qualquer escala, que contém o mesmo número de pesos que as observações.

Só agora percebo que você pode não estar falando R. Caso contrário, você pode querer.


Eu estou muito familiarizado com R, no entanto, gostaria de entender a matemática por trás da função de probabilidade. Eu poderia codificar isso em C ++ ou alguma outra linguagem. (Apenas confiando a "caixa preta" da função glm nem sempre é a melhor solução)
Noah

Ah Bem em você. Bem, até onde eu sei, os pesos são simplesmente usados ​​para multiplicar a probabilidade de log por observação com. Portanto, se você escreveu uma versão não ponderada, adicionar pesos deve ser uma bobagem. Observe também que você sempre pode procurar o código-fonte para glm(provavelmente) encontrar uma implementação em C.
Nick Sabbe

2
3,.57,.53,7

3
Aqui está uma discussão sobre o argumento 'pesos' em um quadro de mensagens: r.789695.n4.nabble.com/Weights-in-binomial-glm-td1991249.html
Macro

@ Macro: thx! Muito arrumado. Uma das coisas que poderiam ter me bateu nos dentes se eu tivesse usado antes seu comentário :-)
Nick Sabbe

1

Se você tiver acesso ao SAS, isso será realizado com muita facilidade usando o PROC GENMOD. Desde que cada observação tenha uma variável de peso, o uso da declaração de peso permitirá que você faça o tipo de análise que está procurando. Eu o usei principalmente usando pesos de probabilidade inversa de tratamento, mas não vejo razão para que você não possa atribuir pesos aos seus dados para enfatizar certos tipos de casos, desde que você verifique se seu N permanece constante. Você também deve incluir algum tipo de variável de ID, porque tecnicamente os casos com ponderação alta são observações repetidas. Código de exemplo, com um ID de observação de 'id' e uma variável de peso de 'wt':

proc genmod data=work.dataset descending;
    class id;
    model exposure = outcome covariate / dist=bin link=logit;
    weight wt;
    repeated subject=id/type=ind;
run;
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.