Se uma variável fator (por exemplo, gênero com níveis M e F) for usada na fórmula glm, as variáveis fictícias serão criadas e poderão ser encontradas no resumo do modelo glm juntamente com seus coeficientes associados (por exemplo, gêneroM)
Se, em vez de confiar em R para dividir o fator dessa maneira, o fator é codificado em uma série de variáveis numéricas 0/1 (por exemplo, gêneroM (1 para M, 0 para F), gêneroF (1 para F, 0 para M) e essas variáveis são usadas como variáveis numéricas na fórmula glm, o resultado do coeficiente seria diferente?
Basicamente, a pergunta é: R usa um cálculo de coeficiente diferente ao trabalhar com variáveis fatoriais versus variáveis numéricas?
Pergunta de acompanhamento (possivelmente respondida acima): além da eficiência de deixar R criar variáveis fictícias, existe algum problema com a recodificação de fatores como uma série de variáveis numéricas 0,1 e usando as do modelo?
Respostas:
Variáveis categóricas (chamadas " fatores " em R) precisam ser representadas por códigos numéricos em vários modelos de regressão. Existem muitas maneiras possíveis de construir códigos numéricos de maneira apropriada (consulte esta ótima lista no site de ajuda de estatísticas da UCLA). Por padrão, o R usa codificação no nível de referência (que R chama de "tratamento de controle") e que é praticamente o padrão em toda a estatística. Isso pode ser alterado para todos os contrastes de toda a sua sessão R usando as opções? Ou para análises / variáveis específicas usando os contrastes ? Ou C (observe a capital). Se você precisar de mais informações sobre codificação no nível de referência, explico aqui: Regressão baseada, por exemplo, nos dias da semana.
Algumas pessoas acham a codificação no nível de referência confusa e você não precisa usá-la. Se desejar, você pode ter duas variáveis para masculino e feminino; isso é chamado nível significa codificação. No entanto, se você fizer isso, será necessário suprimir a interceptação ou a matriz do modelo será singular e a regressão não poderá ser ajustada como as notas do @Affine acima e como explico aqui: A codificação qualitativa de variáveis leva a singularidades . Para suprimir a interceptação, você modifica sua fórmula adicionando
-1
ou+0
assim:y~... -1
ouy~... +0
.O uso da codificação de nível significa em vez da codificação em nível de referência alterará os coeficientes estimados e o significado dos testes de hipótese impressos com a sua saída. Quando você possui um fator de dois níveis (por exemplo, masculino versus feminino) e usa a codificação em nível de referência, verá a interceptação chamadat 0 t 0
(constant)
e apenas uma variável listada na saída (talvezsexM
). A interceptação é a média do grupo de referência (talvez mulheres) esexM
é a diferença entre a média dos homens e a média das mulheres. O valor p associado à interceptação é um teste uma amostra para determinar se o nível de referência tem uma média de e o valor p associado asexM
informa se os sexos diferem em sua resposta. Mas se você usar a codificação de nível médio, terá duas variáveis listadas e cada valor p corresponderá a um teste uma amostra para determinar se a média desse nível é . Ou seja, nenhum dos valores-p será um teste para saber se os sexos diferem.fonte
young F
) e os outros níveis serão diferentes do nível dado de fator 1 w / o nível de referência do outro fator e o grupo dos dois níveis de referência. Por exemplo,old
éold F
- `jovem F, &
M` éyoung M
-young F
.R^2
diferença substancial entre as duas abordagens. Eu sei que é apenas umR^2
, mas existe uma explicação para isso?Os coeficientes estimados seriam os mesmos sujeitos à condição em que você cria suas variáveis fictícias (isto é, as numéricas) consistentes com R. Por exemplo: vamos criar um dado falso e ajustar um fator de Poisson glm. Observe que a
gl
função cria uma variável de fator.Como resultado tem três níveis, crio duas variáveis fictícias (dummy.1 = 0 se resultado = 2 e dummy.2 = 1 se resultado = 3) e recoloque usando esses valores numéricos:
Como você pode ver, os coeficientes estimados são os mesmos. Mas você precisa ter cuidado ao criar suas variáveis fictícias se quiser obter o mesmo resultado. Por exemplo, se eu criar duas variáveis fictícias como (dummy.1 = 0 se resultado = 1 e dummy.2 = 1 se resultado = 2), os resultados estimados serão diferentes da seguinte maneira:
Isso ocorre porque quando você adiciona
outcome
variável no glm.1, R, por padrão, cria duas variáveis fictícias, a saber,outcome2
eoutcome3
define-as de forma semelhante adummy.1
edummy.2
no glm.2, isto é, o primeiro nível de resultado é quando todas as outras variáveis fictícias (outcome2
eoutcome3
) são definidas como zero.fonte