R 用平面GLS逼近曲面
有一个由二维数组形式的点定义的曲面。也就是说,数组索引是x和y坐标,数组元素的值是对应点的z坐标值 有必要找到一个函数a·x+b·y+c=z,该函数从最小二乘的角度来看是最优的,也就是说,计算相应的系数a、b和c。有没有办法在R中做到这一点R 用平面GLS逼近曲面,r,least-squares,surface,approximation,plane,R,Least Squares,Surface,Approximation,Plane,有一个由二维数组形式的点定义的曲面。也就是说,数组索引是x和y坐标,数组元素的值是对应点的z坐标值 有必要找到一个函数a·x+b·y+c=z,该函数从最小二乘的角度来看是最优的,也就是说,计算相应的系数a、b和c。有没有办法在R中做到这一点 谢谢大家! 这是为三维空间中的点集合找到最佳拟合平面的问题 有一个简单的方法来看待这个问题。将矩阵中的每个元素视为具有两个独立变量(x和y)和一个因变量(z)的“观测”。 然后,只需运行线性模型,即可通过最小二乘法找到系数: lm(z ~ x_indices
谢谢大家! 这是为三维空间中的点集合找到最佳拟合平面的问题 有一个简单的方法来看待这个问题。将矩阵中的每个元素视为具有两个独立变量(x和y)和一个因变量(z)的“观测”。 然后,只需运行线性模型,即可通过最小二乘法找到系数:
lm(z ~ x_indices + y_indices)
事实上,我们可以用它来构造一个简单的函数,以矩阵作为输入,并给出a、b和c的值作为输出:
best_plane <- function(any_2d_matrix)
{
x_values <- rep(seq(ncol(any_2d_matrix)), each = nrow(any_2d_matrix))
y_values <- rep(seq(nrow(any_2d_matrix)), ncol(any_2d_matrix))
z <- as.vector(any_2d_matrix)
suppressWarnings(result <- summary(lm(z ~ x_indices + y_indices))$coef)
return(c(a = result[2, 1], b = result[3, 1], c = result[1, 1]))
}
如果我们添加大量随机噪声,我们仍然非常接近:
best_plane(my_matrix + rnorm(100))
#> a b c
#> 3.2486162 0.5054093 -4.3669805
best_plane(my_matrix)
#> a b c
#> 3.2 0.5 -4.0
best_plane(my_matrix + rnorm(100))
#> a b c
#> 3.2486162 0.5054093 -4.3669805