model_matrix()到底是做什么的?

时间:2020-06-24 17:24:05

标签: r modeling

我正在学习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

1 个答案:

答案 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

祝你好运。