在 Excel 中求解 R 中的函数
Solve function in R in Excel
早上好,
所以我正在做一些多元线性回归,需要在 Excel 中展示如何做。
基本上,我有三列 - 年龄、体重和身高作为我的 x 自变量,腰围作为我的 y 变量。
在 R 中设置它,这样我就可以得到我的系数,这样我就可以将它们代入公式,并预测具有年龄、身高和体重但没有腰围的人的腰围:
X <- as.matrix(cbind(1, data$Age, data$Height, data$Weight))
y <- as.matrix(data$WaistCircumference)
beta_hat <- solve(t(X)%*%X)%*%t(X)%*%y
beta_hat
[1]
[1] 100.5429
[2] 0.2136627
[3] 0.7744433
[4] -0.4450378
但我也想在 Excel 中展示如何操作。我认为公式应该是这样的(我认为 R 中的 solve
函数应该给出矩阵 X 的逆矩阵):
{=(MMULT(MMULT(MINVERSE(MMULT(TRANSPOSE(X),X)),TRANSPOSE(X)),Y))}
其中X为年龄、体重、身高相关数组,Y为腰围相关数组。因此,使用 sheet 上的单元格看起来像:
{=MMULT(MMULT(MINVERSE(MMULT(TRANSPOSE(A2:C7681),A2:C7681)),TRANSPOSE(A2:C7681)),D2:D7681)}
但这只给了我 3 个值,而且它们都不正确。也许我做错了操作顺序?我试过在 MINVERSE
周围移动,因为我认为这可能是我的问题,但这似乎也没有解决它。任何帮助将不胜感激:)
编辑:我已经想出如何去做 - 只需将全 1 的新列添加到 X 矩阵,并使用上面的 excel 代码,但将新列包含在 X 数组中,突出显示四个单元格,输入以下公式,然后按 contrl+shift+enter 输入数组公式:
{=MMULT(MMULT(MINVERSE(MMULT(TRANSPOSE(A2:D7681),A2:D7681)),TRANSPOSE(A2:D7681)),E2:E7681)}
像这样(当然,在 R 中更容易,但我想我会分享以防有人需要在 Excel 中这样做):
哦,我知道了!你只需要在旁边放一行 1,这样你就可以在 Excel 中得到一个 n x 4 的矩阵,然后上面的等式就可以了!抱歉发帖!应该再尝试一件事哈哈
早上好,
所以我正在做一些多元线性回归,需要在 Excel 中展示如何做。
基本上,我有三列 - 年龄、体重和身高作为我的 x 自变量,腰围作为我的 y 变量。
在 R 中设置它,这样我就可以得到我的系数,这样我就可以将它们代入公式,并预测具有年龄、身高和体重但没有腰围的人的腰围:
X <- as.matrix(cbind(1, data$Age, data$Height, data$Weight))
y <- as.matrix(data$WaistCircumference)
beta_hat <- solve(t(X)%*%X)%*%t(X)%*%y
beta_hat
[1]
[1] 100.5429
[2] 0.2136627
[3] 0.7744433
[4] -0.4450378
但我也想在 Excel 中展示如何操作。我认为公式应该是这样的(我认为 R 中的 solve
函数应该给出矩阵 X 的逆矩阵):
{=(MMULT(MMULT(MINVERSE(MMULT(TRANSPOSE(X),X)),TRANSPOSE(X)),Y))}
其中X为年龄、体重、身高相关数组,Y为腰围相关数组。因此,使用 sheet 上的单元格看起来像:
{=MMULT(MMULT(MINVERSE(MMULT(TRANSPOSE(A2:C7681),A2:C7681)),TRANSPOSE(A2:C7681)),D2:D7681)}
但这只给了我 3 个值,而且它们都不正确。也许我做错了操作顺序?我试过在 MINVERSE
周围移动,因为我认为这可能是我的问题,但这似乎也没有解决它。任何帮助将不胜感激:)
编辑:我已经想出如何去做 - 只需将全 1 的新列添加到 X 矩阵,并使用上面的 excel 代码,但将新列包含在 X 数组中,突出显示四个单元格,输入以下公式,然后按 contrl+shift+enter 输入数组公式:
{=MMULT(MMULT(MINVERSE(MMULT(TRANSPOSE(A2:D7681),A2:D7681)),TRANSPOSE(A2:D7681)),E2:E7681)}
像这样(当然,在 R 中更容易,但我想我会分享以防有人需要在 Excel 中这样做):
哦,我知道了!你只需要在旁边放一行 1,这样你就可以在 Excel 中得到一个 n x 4 的矩阵,然后上面的等式就可以了!抱歉发帖!应该再尝试一件事哈哈