私は時々model.matrixの使用について混乱します。私はそれがデザインマトリックス(https://en.wikipedia.org/wiki/Design_matrix)を作ることを意図していることを理解していますが、単に列をglmに直接渡すことに固執しないでください。model.matrixを使用してデザインを作成する理由
私は少し違いを見つけることを試みるための例を作りましたが、どちらも同等のようです。誰でも説明できますか?
ありがとうございます!
## Data prep
require(data.table)
require(ggplot2)
set.seed(200)
s = 204
dt = data.table(x1=seq(1,s),
x2=c(-3,0,3,9),
switch = c("Low","Zero","High","VHigh"),
e = rnorm(s,mean =0, sd=5))
dt[, y_real := x1^2+x2*e]
# Regression without explicit design matrix
r = lm(y_real~I(x1^2)+switch,data=dt)
summary(r)
dt[, y_fitted := r$fitted.values]
# Regression with explicit design matrix
mod = model.matrix(~I(x1^2)+switch+0, data=dt)
r2 = lm(dt$y_real~mod)
summary(r2)
dt[, y_model := r2$fitted.values]
identical(dt$y_fitted, dt$y_model) # => FALSE, but errors ~ 1e-14
ggplot(dt[1:20])+
aes(x=x1)+
geom_line(aes(y = y_real, colour = "Y real"))+
geom_point(aes(y = y_fitted, colour = "Y fitted"))+
geom_line(aes(y = y_model, colour = "Y model"))
# => perfectly aligned
カテゴリ変数がある場合はどうなりますか?変数に変換するとどうなりますか?インタラクションがある場合はどうなりますか?スプラインをフィッティングして後で予測するとどうなりますか? –