沿所有坐标轴查找点到(超)平面的投影

问题描述 投票:0回答:1

我有一组线性回归问题,其维度从 2D(拟合到单个自变量的线)到 3D(拟合到两个自变量的平面)再到 nD(其中超平面拟合到三个或更多自变量)。我有兴趣获得沿所有三个主轴(不是正交或最短距离投影)的组成数据点到最佳拟合平面(在 3D 问题的情况下)的投影的数值。 以下页面 https://rpubs.com/ericroh/334817 给出了我想要实现的目标,但我想不仅计算沿 y 轴的投影,还计算沿 x1 和 x2 轴的投影以及。上面链接后面的代码很好地代表了我的数据和尝试,我将在此处重现它

library(scatterplot3d)

dataset = cbind.data.frame(x1 = c(1.9,0.8,1.1,0.1,-0.1,4.4,4.6,1.6,5.5,3.4)
                           ,x2 = c(66, 62, 64, 61, 63, 70, 68, 62, 68, 66)
                           ,y = c(0.7,-1.0,-0.2,-1.2,-0.1,3.4,0.0,0.8,3.7,2.0))
scatterplot3d(x1,x2,y)

ls <- function(dataset, par) { with(dataset, sum((y-par[1]-par[2]*x1-par[3]*x2)^2)) }
result <- optim(par=c(0,0,0), ls, data=dataset) 

plot3d <- scatterplot3d(x1, x2, y, angle = 55, pch = 16, color ="red")
my.lm <- lm(y ~ x1 + x2, data = dataset)
plot3d$plane3d(my.lm, lty.box = "solid")


由于我的回归的维数不同,我对适用于任何 nD 问题的通用解决方案感兴趣。我所有的回归都具有

y ~ x1 + x2 + x3 + ...
的形式(无交叉项),并且我使用 R 的
lm
函数进行回归。是否有可用的 R(如果可能,则为基础)解决方案? 我知道我可以通过插入数据点坐标(除了感兴趣的坐标之外的所有坐标)来从方程(例如 y = A + B * x1 + C * x2)求解单个未知数,但这似乎有点笨拙。

r linear-regression projection
1个回答
0
投票

我想你可以使用摩尔-彭罗斯广义逆矩阵,即

MASS::ginv
,如下所示

A <- as.matrix(cbind(1, dataset[-length(dataset)]))
b <- dataset[[length(dataset)]]
p <- MASS::ginv(A) %*% b

你将获得

> p
            [,1]
[1,] -11.4527879
[2,]   0.4502753
[3,]   0.1725176
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.