model_matrix() 到底是做什么的?
What exactly does model_matrix() do?
我正在学习 R 中的建模,尽管阅读了文档,但我对 modeling_matrix() 在 modelr 包中的作用感到非常困惑。
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
那么 modeling_matrix() 到底做了什么?
它会自动为您找到价值吗?似乎不是这样,因为它会自动输入一个 y 截距列,所以它不会为您计算 y 截距。
它似乎采用 x 值并用它们创建一个矩阵。但是在 y ~I(x^2) + x 示例中,我不明白它从哪里获得 x 值。所以原来的 relationship/equation 被修改为使用 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
我可以向您解释基本的 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
功能的说明。
祝你好运。
我正在学习 R 中的建模,尽管阅读了文档,但我对 modeling_matrix() 在 modelr 包中的作用感到非常困惑。
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
那么 modeling_matrix() 到底做了什么? 它会自动为您找到价值吗?似乎不是这样,因为它会自动输入一个 y 截距列,所以它不会为您计算 y 截距。
它似乎采用 x 值并用它们创建一个矩阵。但是在 y ~I(x^2) + x 示例中,我不明白它从哪里获得 x 值。所以原来的 relationship/equation 被修改为使用 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
我可以向您解释基本的 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
功能的说明。
祝你好运。