with variable regresion generar from dummy_cols dummy dummies create crear con cols categorical r variables

generar - regresion con variables dummy en r



¿Cómo hago una variable ficticia en R? (3)

Con la mayoría de las herramientas de modelado de R con una interfaz de fórmula, no necesita crear variables ficticias, el código subyacente que maneja e interpreta la fórmula lo hará por usted. Si desea una variable ficticia por alguna otra razón, entonces hay varias opciones. El más fácil (en mi humilde opinión) es usar model.matrix() :

set.seed(1) dat <- data.frame(sex = sample(c("male","female"), 10, replace = TRUE)) model.matrix( ~ sex - 1, data = dat)

lo que da:

> dummy <- model.matrix( ~ sex - 1, data = dat) > dummy sexfemale sexmale 1 0 1 2 0 1 3 1 0 4 1 0 5 0 1 6 1 0 7 1 0 8 1 0 9 1 0 10 0 1 attr(,"assign") [1] 1 1 attr(,"contrasts") attr(,"contrasts")$sex [1] "contr.treatment" > dummy[,1] 1 2 3 4 5 6 7 8 9 10 0 0 1 1 0 1 1 1 1 0

Puede usar cualquiera de las columnas del dummy como una variable ficticia numérica; elija la columna que desee que sea el nivel 1 . dummy[,1] elige 1 como representando la clase femenina y el dummy[,2] la clase masculina.

Eche esto como un factor si quiere que se interprete como un objeto categórico:

> factor(dummy[, 1]) 1 2 3 4 5 6 7 8 9 10 0 0 1 1 0 1 1 1 1 0 Levels: 0 1

Pero eso es derrotar al objeto de factor; ¿Qué es 0 nuevo?

Entonces, mi conjunto de datos consta de 15 variables, una de ellas (sexo) tiene solo 2 niveles. Quiero usarlo como una variable ficticia, pero los niveles son 1 y 2. ¿Cómo hago esto? Quiero tener los niveles 0 y 1, pero no sé cómo administrar esto en R!


Ty esto

set.seed(001) # generating some data sex <- factor(sample(1:2, 10, replace=TRUE)) # this is what you have [1] 1 1 2 2 1 2 2 2 2 1 Levels: 1 2 sex<-factor(ifelse(as.numeric(sex)==2, 1,0)) # this is what you want sex [1] 0 0 1 1 0 1 1 1 1 0 Levels: 0 1

Si desea que las etiquetas sean 0 = Hombre y 1 = Mujer, entonces ...

sex<-factor(ifelse(as.numeric(sex)==2, 1,0), labels=c(''M'', ''F'')) sex # this is what you want [1] M M F F M F F F F M Levels: M F

En realidad, no necesita crear una variable ficticia para estimar un modelo usando lm , veamos este ejemplo:

set.seed(001) # Generating some data N <- 100 x <- rnorm(N, 50, 20) y <- 20 + 3.5*x + rnorm(N) sex <- factor(sample(1:2, N, replace=TRUE)) # Estimating the linear model lm(y ~ x + sex) # using the first category as the baseline (this means sex==1) Call: lm(formula = y ~ x + sex) Coefficients: (Intercept) x sex2 19.97815 3.49994 -0.02719 # renaming the categories and labelling them sex<-factor(ifelse(as.numeric(sex)==2, 1,0), labels=c(''M'', ''F'')) lm(y ~ x + sex) # the same results, baseline is ''Male'' Call: lm(formula = y ~ x + sex) Coefficients: (Intercept) x sexF 19.97815 3.49994 -0.02719

Como puede ver, R trata bastante bien con los maniquíes, simplemente los pasa a la fórmula como variable de factor y R hará el resto por usted.

Por cierto, no hay necesidad de cambiar las categorías de c (2,1) a c (0,1), los resultados serán los mismos que se pueden ver en el ejemplo anterior.


Como lo sugirieron muchos más arriba, conviértalo en factor.

Si realmente quieres un código ficticio de la variable de género, considera esto

set.seed(100) gender = rbinom(100,1,0.5)+1 gender_dummy = gender-1