gpt4 book ai didi

r - 如何从线性模型的 coef/model.matrix 返回中手动获取 predict() 值

转载 作者:行者123 更新时间:2023-12-03 15:14:09 26 4
gpt4 key购买 nike

我在弄清楚如何从模型系数和模型矩阵中找到预测值时遇到了很多麻烦。我希望有人可以提供帮助。

我目前有一个线性模型,其中包含我正在设置的两个自变量。例如

data <- data.frame(d1,d2,d3)
lm.data <- lm(d1~d2*d3,data)

我现在可以得到系数向量
co.data <- coef(lm.data)

我现在也可以轻松获得模型矩阵
mm.data <- model.matrix(lm.data)

这是我可以失去的地方!!我正在尝试自学如何在使用 predict(lm.data) 时匹配我可以匹配的值与系数。换句话说,我从设计矩阵和系数中知道模型的预测值是可以计算的,但是经过过去 48 小时的工作,我真的不知道。

任何帮助将是惊人的。

最佳答案

您只需要知道线性模型是如何工作的。
如果你的公式是 d1 ~ d2 * d3他们都是数字,然后预测你就做 (intercept) + (d2 coefficient)*x_d2 + (d3 coefficient)*x_d3 + (d2:d3 coefficient)*x_d2*x_d3这会给你预测的 d1 .

这是一个可重现的示例:

data(iris)
m <- lm(Sepal.Length ~ Petal.Length * Sepal.Width, iris)
co.data <- coef(m)

# we'll predict the sepal length for these petal lengths and sepal widths:
x.pl <- runif(5, min=1, max=2)
x.sw <- runif(5, min=2, max=5)
y.predicted <- predict(m, data.frame(Petal.Length=x.pl, Sepal.Width=x.sw))
# 1 2 3 4 5
# 5.379006 5.495907 5.296913 4.382487 5.131850

现在手动完成,让我们看看系数:
co.data
# Intercept) Petal.Length Sepal.Width Petal.Length:Sepal.Width
# 1.40438275 0.71845958 0.84995691 -0.07701327

根据上面的公式:
y <- co.data[1] + co.data[2]*x.pl + co.data[3] * x.sw + co.data[4]*x.pl*x.sw
# [1] 5.379006 5.495907 5.296913 4.382487 5.131850

您可以执行以下操作,而不是手动将其写出:
# x is a matrix with columns 1, petal length, sepal width, pl*sw
# (matches order of co.data)
x <- cbind(1, matrix(c(x.pl, x.sw, x.pl*x.sw), ncol=3))
x %*% co.data
# [,1]
# [1,] 5.379006
# [2,] 5.495907
# [3,] 5.296913
# [4,] 4.382487
# [5,] 5.131850

关于r - 如何从线性模型的 coef/model.matrix 返回中手动获取 predict() 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31419637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com