Você está na página 1de 9

11/05/2017 Codificação de variáveis   categóricas em modelos de regressão | R Learning Modules ­ IDRE Estatísticas

CODIFICAÇÃO DE VARIÁVEIS CATEGÓRICAS EM MODELOS DE


REGRESSÃO | R MÓDULOS DE APRENDIZAGEM
Version info: Code for this page was tested in R version 3.0.2 (2013‐09‐25) 
On: 2013‐11‐19 
With: lattice 0.20‐24; foreign 0.8‐57; knitr 1.5

Em R há pelo menos três funções diferentes que podem ser usadas para obter variáveis   de
contraste para uso em regressão ou ANOVA. Para aqueles mostrados abaixo, a codificação de
contraste padrão é "tratamento" de codificação, que é outro nome para codificação "dummy".
Esta é a codificação mais familiar para os estatísticos. A codificação "manequim" ou
"tratamento" consiste basicamente em criar variáveis   dicotômicas onde cada nível da variável
categórica é contrastado com um nível de referência especificado. No caso da raça variável que
tem quatro níveis, um esquema típico de codificação de manequim envolve a especificação de
um nível de referência, vamos escolher o nível 1 (que é o padrão) e, em seguida, criar três
variáveis   dicotômicas, onde cada variável iria contrastar cada uma das Outros níveis com nível
1. Assim, Teríamos uma variável que iria contrastar o nível 2 com o nível 1, outra variável que
iria contrastar o nível 3 com o nível 1 e uma terceira variável que iria contrastar o nível 4 com o
nível 1. Na verdade, existem quatro diferentes códigos de contrastes que incorporaram funções
em R, mas vamos concentrar a nossa atenção sobre o tratamento (ou manequim) de
codificação, uma vez que é a escolha mais popular para analistas de dados. Para obter mais
informações sobre diferentes sistemas de codificação de contrastes e como implementá­los em
R, consulte a Biblioteca R: Sistemas de codificação para variáveis   categóricas (/r/library/r­
library­contrast­coding­systems­for­categorical­variables/) . Mas vamos concentrar a nossa
atenção sobre o tratamento (ou manequim) de codificação, uma vez que é a escolha mais
popular para analistas de dados. Para obter mais informações sobre diferentes sistemas de
codificação de contrastes e como implementá­los em R, consulte a Biblioteca R: Sistemas de
codificação para variáveis   categóricas (/r/library/r­library­contrast­coding­systems­for­
categorical­variables/) . Mas vamos concentrar a nossa atenção sobre o tratamento (ou
manequim) de codificação, uma vez que é a escolha mais popular para analistas de dados.
Para obter mais informações sobre diferentes sistemas de codificação de contrastes e como
implementá­los em R, consulte a Biblioteca R: Sistemas de codificação para variáveis   
categóricas (/r/library/r­library­contrast­coding­systems­for­categorical­variables/) .

Para os exemplos nesta página vamos usar o conjunto de dados hsb2 . Vamos primeiro ler no
conjunto de dados e criar a variável de fator race.f com base na variável raça . Em seguida,
usaremos a função is.factor para determinar se a variável que criamos é realmente uma

variável de fator e, em seguida, usaremos a função lm para executar uma regressão e
obteremos um resumo da regressão usando a função de resumo .

Hsb2  <‐  read.csv ( "http://www.ats.ucla.edu/stat/data/hsb2.csv" )

http://stats.idre.ucla.edu/r/modules/coding­for­categorical­variables­in­regression­models/ 1/9
11/05/2017 Codificação de variáveis   categóricas em modelos de regressão | R Learning Modules ­ IDRE Estatísticas

Hsb2  <‐  read.csv ( "http://www.ats.ucla.edu/stat/data/hsb2.csv" )

1. A função do fator

# Criando a variável de fator  
hsb2 $ race.f  <‐  factor (hsb2 $ race)  
is.factor (hsb2 $ race.f) 

## [1] VERDADEIRO 

Hsb2 $ race.f [ 1 : 15 ] 

## [1] 4 4 4 4 4 4 3 1 4 3 4 4 4 4 3 
## Níveis: 1 2 3 4 

Resumo ( lm (write  ~  race.f,  data  = hsb2)) 

‐benzóico.  
## Ligar: 
## lm (fórmula = escrever ~ race.f, data = hsb2) 
‐benzóico.  
Resíduos: 
## Min 1Q Mediana 3Q Max  
## ‐23.055 ‐5.458 0.972 7.000 18.800  
‐benzóico.  
## Coeficientes: 
## Estimativa Std. Erro t valor Pr (> | t |)     
## (Intercepto) 46,46 1,84 25,22 <2e‐16 *** 
## race.f2 11,54 3,29 3,51 0,00055 *** 
## race.f3 1,74 2,73 0,64 0,52461     
## race.f4 7,60 1,99 3,82 0,00018 *** 
‐benzóico. 
Signif. Códigos: 0 '***' 0,001 '**' 0,01 '*' 0,05 '.' 0,1 '' 1 
‐benzóico.  
## Erro padrão residual: 9.03 em 196 graus de liberdade 
## Multiple R‐quadrado: 0,107, ajustado R‐quadrado: 0,0934  
## F‐estatística: 7,83 em 3 e 196 DF, valor de p: 5,78e‐05 

Você também pode usar a função fator dentro da função lm , salvando o passo de criar a
variável fator primeiro.

Sumário ( lm (escreva  ~  fator (raça),  dados  = hsb2)) 

‐benzóico.  
## Ligar: 
## lm (fórmula = escrever ~ fator (raça), data = hsb2) 
‐benzóico.  
Resíduos: 

http://stats.idre.ucla.edu/r/modules/coding­for­categorical­variables­in­regression­models/ 2/9
11/05/2017 Codificação de variáveis   categóricas em modelos de regressão | R Learning Modules ­ IDRE Estatísticas

Resíduos: 
## Min 1Q Mediana 3Q Max  
## ‐23.055 ‐5.458 0.972 7.000 18.800  
‐benzóico.  
## Coeficientes: 
## Estimativa Std. Erro t valor Pr (> | t |)     
## (Intercepto) 46,46 1,84 25,22 <2e‐16 *** 
## factor (corrida) 2 11,54 3,29 3,51 0,00055 *** 
## factor (corrida) 3 1,74 2,73 0,64 0,52461     
## factor (corrida) 4 7,60 1,99 3,82 0,00018 *** 
‐benzóico. 
Signif. Códigos: 0 '***' 0,001 '**' 0,01 '*' 0,05 '.' 0,1 '' 1 
‐benzóico.  
## Erro padrão residual: 9.03 em 196 graus de liberdade 
## Multiple R‐quadrado: 0,107, ajustado R‐quadrado: 0,0934  
## F‐estatística: 7,83 em 3 e 196 DF, valor de p: 5,78e‐05 

2. Usando a função C
The C function (this must be a upper­case "C") allows you to create several different kinds of
contrasts, including treatment, Helmert, sum and poly. Treatment is another name for dummy
coding. Sum stands for contrasts that sum to zero, such as the type used in ANOVA models.
Poly is short for polynomial. Three arguments are used with this function. The first one names
the factor to be used, the second indicated the type of contrast to be used (e.g., treatment,
Helmert, etc.), and the third indicates the number of contrasts to be set. The default is one less
than the number of levels of the factor variable. We will start out by using the treatment contrast.
We will accept the default setting for the number of levels, so that argument can be omitted.

Hsb2  <‐  within (hsb2, {  
    race.ct  <‐  C (race.f, tratamento)  
    print ( atributos (race.ct))  

## $ níveis 
## [1] "1" "2" "3" "4" 
‐benzóico.  
## $ class 
## [1] "fator" 
‐benzóico.  
## $ contrastes 
## [1] "contr.treatment" 

Resumo ( lm (write  ~  race.ct,  data  = hsb2)) 

‐benzóico.  
## Ligar: 
## lm (fórmula = write ~ race.ct, data = hsb2) 
‐benzóico.  
Resíduos: 

http://stats.idre.ucla.edu/r/modules/coding­for­categorical­variables­in­regression­models/ 3/9
11/05/2017 Codificação de variáveis   categóricas em modelos de regressão | R Learning Modules ­ IDRE Estatísticas

Resíduos: 
## Min 1Q Mediana 3Q Max  
## ‐23.055 ‐5.458 0.972 7.000 18.800  
‐benzóico.  
## Coeficientes: 
## Estimativa Std. Erro t valor Pr (> | t |)     
## (Intercepto) 46,46 1,84 25,22 <2e‐16 *** 
## race.ct2 11,54 3,29 3,51 0,00055 *** 
## race.ct3 1,74 2,73 0,64 0,52461     
## race.ct4 7,60 1,99 3,82 0,00018 *** 
‐benzóico. 
Signif. Códigos: 0 '***' 0,001 '**' 0,01 '*' 0,05 '.' 0,1 '' 1 
‐benzóico.  
## Erro padrão residual: 9.03 em 196 graus de liberdade 
## Multiple R‐quadrado: 0,107, ajustado R‐quadrado: 0,0934  
## F‐estatística: 7,83 em 3 e 196 DF, valor de p: 5,78e‐05 

Agora vamos tentar um exemplo usando o sistema de codificação Helmert que compara cada
nível subseqüente com a média dos níveis anteriores. Por exemplo, o terceiro nível será
comparado com a média dos dois primeiros níveis eo quarto nível será comparado com a média
dos três primeiros níveis. Observe também que, como a maioria das funções em R, C é sensível
a maiúsculas e minúsculas: os argumentos para o tipo de contraste devem ser em todas as
letras minúsculas (ou seja, digitando Helmert lhe dará uma mensagem de erro estranha que não
indica que o problema é Que você precisa usar uma minúscula h (helmert)). Vamos fazer dois
objetos usando este tipo de codificação: para o primeiro vamos aceitar o número padrão de
contrastes a serem criados, E no segundo vamos especificar que três contrastes devem
ser feitos (porque a variável raça tem quatro níveis). Como você verá, a diferença é
encontrada na saída da função de atributos , não nos resultados da lm .

Hsb2  <‐  within (hsb2, {  
    race.ch  <‐  C (race.f, helmert)  
    print ( atributos (race.ch))  

## $ níveis 
## [1] "1" "2" "3" "4" 
‐benzóico.  
## $ class 
## [1] "fator" 
‐benzóico.  
## $ contrastes 
## [1] "contr.helmert" 

Resumo ( lm (write  ~  race.ch,  data  = hsb2)) 

‐benzóico.  
## Ligar: 
## lm (fórmula = escrever ~ race.ch, data = hsb2) 
‐benzóico.  
Resíduos: 

http://stats.idre.ucla.edu/r/modules/coding­for­categorical­variables­in­regression­models/ 4/9
11/05/2017 Codificação de variáveis   categóricas em modelos de regressão | R Learning Modules ­ IDRE Estatísticas

Resíduos: 
## Min 1Q Mediana 3Q Max  
## ‐23.055 ‐5.458 0.972 7.000 18.800  
‐benzóico.  
## Coeficientes: 
## Estimativa Std. Erro t valor Pr (> | t |)     
(Intercepto) 51,678 0,982 52,62 <2e‐16 *** 
## race.ch1 5.771 1.643 3.51 0.00055 *** 
## race.ch2 ‐1.343 0.867 ‐1.55 0.12317     
## race.ch3 0,792 0,372 2,13 0,03444 *   
‐benzóico. 
Signif. Códigos: 0 '***' 0,001 '**' 0,01 '*' 0,05 '.' 0,1 '' 1 
‐benzóico.  
## Erro padrão residual: 9.03 em 196 graus de liberdade 
## Multiple R‐quadrado: 0,107, ajustado R‐quadrado: 0,0934  
## F‐estatística: 7,83 em 3 e 196 DF, valor de p: 5,78e‐05 

Hsb2  <‐  within (hsb2, {  
    race.ch1  <‐  C (race.f, helmert,  3 )  
    print ( atributos (race.ch1))  

## $ níveis 
## [1] "1" "2" "3" "4" 
‐benzóico.  
## $ class 
## [1] "fator" 
‐benzóico.  
## $ contrastes 
## [1] [, 2] [, 3] 
## 1 ‐1 ‐1 ‐1 
## 2 1 ‐1 ‐1 
## 3 0 2 ‐1 
## 4 0 0 3 

Resumo ( lm (escrever  ~  race.ch1,  dados  = hsb2)) 

‐benzóico.  
## Ligar: 
## lm (fórmula = escrever ~ race.ch1, data = hsb2) 
‐benzóico.  
Resíduos: 

http://stats.idre.ucla.edu/r/modules/coding­for­categorical­variables­in­regression­models/ 5/9
11/05/2017 Codificação de variáveis   categóricas em modelos de regressão | R Learning Modules ­ IDRE Estatísticas

Resíduos: 
## Min 1Q Mediana 3Q Max  
## ‐23.055 ‐5.458 0.972 7.000 18.800  
‐benzóico.  
## Coeficientes: 
## Estimativa Std. Erro t valor Pr (> | t |)     
(Intercepto) 51,678 0,982 52,62 <2e‐16 *** 
## race.ch11 5.771 1.643 3.51 0.00055 *** 
## race.ch12 ‐1.343 0.867 ‐1.55 0.12317     
## race.ch13 0,792 0,372 2,13 0,03444 *   
‐benzóico. 
Signif. Códigos: 0 '***' 0,001 '**' 0,01 '*' 0,05 '.' 0,1 '' 1 
‐benzóico.  
## Erro padrão residual: 9.03 em 196 graus de liberdade 
## Multiple R‐squared:  0.107,  Adjusted R‐squared:  0.0934  
## F‐statistic: 7.83 on 3 and 196 DF,  p‐value: 5.78e‐05 

3. Using the contr. function


The contr. function is a little different from the preceding functions, in that it is really two
functions. In most cases, you will have function on both sides of <­ . On the left side you will
usually have the contrasts() function, and on the right contr.treatment(), contr.helmert(), or
whatever contrast you want to use. We suggest that you first look at the help file for this function,
as the arguments are different for each type of contrast (i.e., treatment, Helmert, sum and poly).
For the treatment contrast, the arguments are n, base and contrasts. There is no default for the n
argument, so this number must be specified. The default for the base argument is 1, meaning
that the first level is used as the reference level. The default for the contrasts argument is TRUE.

One advantage to using the two function method is that it allows you to change the default
reference level if you like. We will not show that here, but it can be done using the options()
function (see the help file for contrasts for an example of how to do this).

First, we will use the contrasts() function by itself simply to show what it is doing. Please note
that while the example works for treatment coding, it does not work for other types of coding.

(a <‐ contrasts(hsb2$race.f)) 

##   2 3 4 
## 1 0 0 0 
## 2 1 0 0 
## 3 0 1 0 
## 4 0 0 1 

Now let's use the contrasts() function with the contr.treatment() function. The results from the
linear model (the lm() function) should match those that we have obtained previously.  Note that
the number given in the parentheses is the number of levels of the factor variable race.

http://stats.idre.ucla.edu/r/modules/coding­for­categorical­variables­in­regression­models/ 6/9
11/05/2017 Codificação de variáveis   categóricas em modelos de regressão | R Learning Modules ­ IDRE Estatísticas

contrasts(hsb2$race.f) <‐ contr.treatment(4) 
summary(lm(write ~ race.f, data = hsb2)) 

##  
## Call: 
## lm(formula = write ~ race.f, data = hsb2) 
##  
## Residuals: 
##     Min      1Q  Median      3Q     Max  
## ‐23.055  ‐5.458   0.972   7.000  18.800  
##  
## Coefficients: 
##             Estimate Std. Error t value Pr(>|t|)     
## (Intercept)    46.46       1.84   25.22  < 2e‐16 *** 
## race.f2        11.54       3.29    3.51  0.00055 *** 
## race.f3         1.74       2.73    0.64  0.52461     
## race.f4         7.60       1.99    3.82  0.00018 *** 
## ‐‐‐ 
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
##  
## Residual standard error: 9.03 on 196 degrees of freedom 
## Multiple R‐squared:  0.107,  Adjusted R‐squared:  0.0934  
## F‐statistic: 7.83 on 3 and 196 DF,  p‐value: 5.78e‐05 

Now let's try changing the reference level to the second level of race.f.

contrasts(hsb2$race.f) <‐ contr.treatment(4, base = 2) 
summary(lm(write ~ race.f, data = hsb2)) 

##  
## Call: 
## lm(formula = write ~ race.f, data = hsb2) 
##  
## Residuals: 
##     Min      1Q  Median      3Q     Max  
## ‐23.055  ‐5.458   0.972   7.000  18.800  
##  
## Coefficients: 
##             Estimate Std. Error t value Pr(>|t|)     
## (Intercept)    58.00       2.72   21.31  < 2e‐16 *** 
## race.f1       ‐11.54       3.29   ‐3.51  0.00055 *** 
## race.f3        ‐9.80       3.39   ‐2.89  0.00425 **  
## race.f4        ‐3.94       2.82   ‐1.40  0.16380     
## ‐‐‐ 
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
##  
## Residual standard error: 9.03 on 196 degrees of freedom 
## Multiple R‐squared:  0.107,  Adjusted R‐squared:  0.0934  
## F‐statistic: 7.83 on 3 and 196 DF,  p‐value: 5.78e‐05 

Another way of doing the same thing would be to specify which levels of the factor variable
race.f are to be included in the model.

summary(lm(write ~ I(race.f == 1) + I(race.f == 3) + I(race.f == 4), data = hsb2))

http://stats.idre.ucla.edu/r/modules/coding­for­categorical­variables­in­regression­models/ 7/9
11/05/2017 Codificação de variáveis   categóricas em modelos de regressão | R Learning Modules ­ IDRE Estatísticas

summary(lm(write ~ I(race.f == 1) + I(race.f == 3) + I(race.f == 4), data = hsb2))

##  
## Call: 
## lm(formula = write ~ I(race.f == 1) + I(race.f == 3) + I(race.f ==  
##     4), data = hsb2) 
##  
## Residuals: 
##     Min      1Q  Median      3Q     Max  
## ‐23.055  ‐5.458   0.972   7.000  18.800  
##  
## Coefficients: 
##                    Estimate Std. Error t value Pr(>|t|)     
## (Intercept)           58.00       2.72   21.31  < 2e‐16 *** 
## I(race.f == 1)TRUE   ‐11.54       3.29   ‐3.51  0.00055 *** 
## I(race.f == 3)TRUE    ‐9.80       3.39   ‐2.89  0.00425 **  
## I(race.f == 4)TRUE    ‐3.94       2.82   ‐1.40  0.16380     
## ‐‐‐ 
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
##  
## Residual standard error: 9.03 on 196 degrees of freedom 
## Multiple R‐squared:  0.107,  Adjusted R‐squared:  0.0934  
## F‐statistic: 7.83 on 3 and 196 DF,  p‐value: 5.78e‐05 

Now let's try using the Helmert coding.

contrasts(hsb2$race.f) <‐ contr.helmert(4) 
summary(lm(write ~ race.f, data = hsb2)) 

##  
## Call: 
## lm(formula = write ~ race.f, data = hsb2) 
##  
## Residuals: 
##     Min      1Q  Median      3Q     Max  
## ‐23.055  ‐5.458   0.972   7.000  18.800  
##  
## Coefficients: 
##             Estimate Std. Error t value Pr(>|t|)     
## (Intercept)   51.678      0.982   52.62  < 2e‐16 *** 
## race.f1        5.771      1.643    3.51  0.00055 *** 
## race.f2       ‐1.343      0.867   ‐1.55  0.12317     
## race.f3        0.792      0.372    2.13  0.03444 *   
## ‐‐‐ 
Signif. Códigos: 0 '***' 0,001 '**' 0,01 '*' 0,05 '.' 0,1 '' 1 
‐benzóico.  
## Erro padrão residual: 9.03 em 196 graus de liberdade 
## Multiple R‐quadrado: 0,107, ajustado R‐quadrado: 0,0934  
## F‐estatística: 7,83 em 3 e 196 DF, valor de p: 5,78e‐05 

Clique aqui para relatar um erro nesta página ou deixar um comentário

Como citar esta página (http://stats.idre.ucla.edu/other/mult­pkg/faq/general/faq­how­do­i­cite­web­pages­and­
programs­from­the­ucla­statistical­consulting­group/)

http://stats.idre.ucla.edu/r/modules/coding­for­categorical­variables­in­regression­models/ 8/9
11/05/2017 Codificação de variáveis   categóricas em modelos de regressão | R Learning Modules ­ IDRE Estatísticas

programs­from­the­ucla­statistical­consulting­group/)

UCLA Escritório de Informação e Tecnologia (https://oit.ucla.edu/)
© 2017 (http://www.ucla.edu/terms­of­use/)   CASA (/)   CONTATO (/contact)   ENTRAR (/wp­admin)

http://stats.idre.ucla.edu/r/modules/coding­for­categorical­variables­in­regression­models/ 9/9

Você também pode gostar