我正在学习R中的建模,尽管阅读了文档,但我对建模器包中的model_matrix()感到非常困惑。
model_matrix(data, formula)
data = your x and y variables in a dataframe/tibble
formula = the relationship between x and y so y~x or y~ I(x^2) + x
那么modelling_matrix()到底能做什么? 它会自动为您找到价值吗?似乎不是这样,因为它会自动为y截距输入一列,所以它不像它为您计算y截距。
IT似乎需要x值并使用它们创建一个矩阵。但是在y〜I(x ^ 2)+ x的示例中,我不知道它从哪里获得x值。因此,通过使用I()修改每个X值的平方来修改原始关系/方程。但是,为什么I(x ^ 2)的第一个值是1、4、9?我不知道他们从哪里得到这些数字。
~y, ~x,
1, 1,
2, 2,
3, 3
)
model_matrix(df, y ~ x^2 + x)
#> # A tibble: 3 x 2
#> `(Intercept)` x
#> <dbl> <dbl>
#> 1 1 1
#> 2 1 2
#> 3 1 3
model_matrix(df, y ~ I(x^2) + x)
#> # A tibble: 3 x 3
#> `(Intercept)` `I(x^2)` x
#> <dbl> <dbl> <dbl>
#> 1 1 1 1
#> 2 1 4 2
#> 3 1 9 3
类似地,我对spline()或poly()与model_matrix()的关系感到困惑,但是也许可以通过找出model_matrix的作用来回答这个问题
library(splines)
model_matrix(df, y ~ ns(x, 2))
#> # A tibble: 3 x 3
#> `(Intercept)` `ns(x, 2)1` `ns(x, 2)2`
#> <dbl> <dbl> <dbl>
#> 1 1 0 0
#> 2 1 0.566 -0.211
#> 3 1 0.344 0.771
答案 0 :(得分:0)
我可以向您介绍基本的model.matrix
函数。
df <- data.frame(x = rnorm(100),
y = rnorm(100),
z = factor(c(rep(1, 50), rep(2, 50))))
head(model.matrix(y ~ x + z + x:z, data = df))
model.matrix
基于公式创建目标矩阵。设计矩阵是模型的表示形式,具有正确的变量表示形式。例如,如果您写的平方像I(^ 2),它将计算变量的平方。
M <- model.matrix(y ~ I(x^2) + z + x:z, data = df)
sum(M[,2] == df$x^2) == nrow(df)
TRUE
有关设计矩阵的说明,请参见their,有关?model.matrix
函数的说明,请写入model.matrix
。
祝你好运。