我想为我的数据绘制一个回归平面:
结构(列表(L = C(96.4155,76.803,71.5615,68.193,65.6975,74.627,67.82,67.82,64.26,62.06,62.06,60.35,68.35,68.284 58.27, 56.42, 54.91, 53.65), a = c(-0.8375, -20.47, -22.1875, -22.6125, -22.5845, -2.2415, -12.91, -16.16, -17.9, -18.77, -2.4, -10.28, - 13.64, -15.33, -16.37, -2.4495, -8.66, -11.74, -13.46, -14.55, -2.4645, -7.58, -10.38, -12.06, -13.09), b = c(1.437, -24.5915, -29.3275) , -31.892, -33.524, -5.151, -15.22, -19.61, -22.65, -24.8, -6.239, -13.24, -17.11, -19.64, -21.55, -6.7845, -12.18, -15.45, -17.68, - 19.47, -7.124, -11.53, -14.38, -16.41, -17.89)), .Names = c("L", "a", "b"), row.names = c(NA, 25L), class = “数据帧”)
我从这里尝试了一个例子。这是我的尝试:
L<-X[1:25,2]
a<-X[1:25,3]
b<-X[1:25,4]
mod2 = lm(L~a*b)
open3d()
plot3d(x=a, y=b, z=L, type="s", col="red", size=1)
grd <- expand.grid(x1=a, x2=b )
grd$pred <-predict(mod2, newdata=grd)
persp3d(x=unique(grd[,1]), y=unique(grd[,2]),
z=matrix(grd[,3]), add=TRUE, alpha=0.5)
3d-Plot 看起来不错,但对于网格,我收到此错误:
Error in persp3d.default(x = grd[, 1], y = grd[, 2], z = matrix(grd[, :
increasing 'x' and 'y' values expected
我的代码中的问题在哪里,是否有另一种方法可以解决我的问题?谢谢你的帮助!
更新:
我已经用 plane3d() 试过了,但得到了这个错误:
Error in segments(x, z1, x + y.max * yx.f, z2 + yz.f * y.max, lty = ltya, :
cannot mix zero-length and non-zero-length coordinates
但是,在寻找其他解决方案后,我发现我的意图是错误的。我正在寻找这样的东西......
...但是不知道如何实现它,或者根据我对 R 的实际了解是否有可能。有人知道吗?
更新2:
我已经使用以下代码尝试了 scatter3d() 函数:
scatter3d(a,b,L,fit="smooth")
但收到此错误:
Error in smooth.construct.tp.smooth.spec(object, dk$data, dk$knots) :
A term has fewer unique covariate combinations than specified maximum degrees of freedom
我已经发现,我必须使用 choose.k 来调整自由度,但它总是针对 gam 函数进行解释,我不知道如何在 scatter3d 函数中使用它。任何想法?