Recentemente, eu estava comparando dois exercícios de estatística e descobri que saídas diferentes para a mesma entrada em R talvez seja um comportamento não intencional do R, certo?
model1 <- lm(rent ~ area + bath, data = rent99)
coefficients1 <- coef(model1)
# Using a matrix without an intercept column
X <- cbind(rent99$area, rent99$bath)
model2 <- lm(rent99$rent ~ X[, 1] + X[, 2])
coefficients2 <- coef(model2)
# Both coefficients1 and coefficients2 should be identical
coefficients1
coefficients2
Saída:
(Intercept) area bath1
144.149195 4.587025 100.661413
(Intercept) X[, 1] X[, 2]
43.487782 4.587025 100.661413
Eu diria que os coeficientes são idênticos, porque os dados de entrada são idênticos
bath
é uma variável fatorial.Vamos reproduzir:
O problema é o seu uso de
cbind
. Ele produz uma matriz e uma matriz pode conter apenas um tipo de dado e não pode conter objetos S3 (como um fator).Assim,
cbind
funciona comoas.numeric
no seu exemplo:Como você vê, isso retorna os inteiros internos da variável fator. Basicamente, você recodificou essa variável de 0/1 para 1/2. É por isso que a segunda interceptação é
144.149195 - 1 * 100.661413
.