将3D表面拟合到点数据集[R]

时间:2015-11-21 21:43:48

标签: r 3d regression curve-fitting surface

我一直试图将多项式曲面拟合到一组具有3个坐标的点。

让数据为:

DATA <- with(mtcars, as.data.frame(cbind(1:32, wt,disp,mpg)))

我一直试图使用以下方法绘制表面:

    来自 rgl 包的
  1. plot3d
  2. 使用 rsm 包,
  3. scatterplot3d 包。
  4. 例如:

    library(scatterplot3d)
    attach(mtcars)
    DATA <- as.data.frame(cbind(1:32, wt,disp,mpg))
    scatterplot3d(wt,disp,mpg, main="3D Scatterplot")
    model <- loess(mpg ~wt + disp, data=DATA)
    x <-range(DATA$wt)
    x <- seq(x[1], x[2], length.out=50)    
    y <- range(DATA$disp)
    y <- seq(y[1], y[2], length.out=50)
    z <- outer(x,y, 
           function(wt,disp)
             predict(model, data.frame(wt,disp)))
    z
    p <- persp(x,y,z, theta=30, phi=30, 
           col="lightblue",expand = 0.5,shade = 0.2,
           xlab="wt", ylab="disp", zlab="mpg")
    

    我也尝试过使用 surf.ls 功能:

    surf.ls(2,DATA[,2],DATA[,3],DATA[,4])
    

    但我得到的是这样的: 我真的不知道如何将其转换为3D图,更重要的是,如何获得最佳拟合曲面的公式。

    我真的很感谢你的帮助。

    PS我删除了我的上一篇文章,并在此篇文章中包含了更多详细信息。

1 个答案:

答案 0 :(得分:1)

试试这个:

parse jssdk 1.5.0

要使用rsm绘图,请使用以下命令:

attach(mtcars)
DATA <- as.data.frame(cbind(1:32, wt,disp,mpg))

x_wt <- DATA$wt
y_disp <- DATA$disp
z_mpg <- DATA$mpg

fit <- lm(z_mpg ~ poly(x_wt, y_disp, degree = 2), data = DATA)

要使用ggplot绘图,请使用以下命令:

library(rsm)
image(fit, y_disp ~ x_wt)
contour(fit, y_disp ~ x_wt)
persp(fit, y_disp ~ x_wt, zlab = "z_mpg")

要查看所有可用的direct.label方法,请转到http://directlabels.r-forge.r-project.org/docs/index.html