在R中的三维图形中绘制具有交互的回归曲面

在R中的三维图形中绘制具有交互的回归曲面,r,rgl,r-car,R,Rgl,R Car,使用car::scatter3d(),我试图创建一个具有回归曲面的三维图形,该曲面指示分类变量和连续变量之间的交互作用。部分遵循代码,我得到了下图 这个数字显然是错误的,因为回归曲面没有达到分类变量的某个值。问题可能在于使用了rgl::persp3d()(下面代码的最后一块),但我无法确定我到底做错了什么。有人能告诉我我遗漏了什么以及如何解决问题吗 library(rgl) library(car) n <- 100 set.seed(1) x <- runif(n, 0, 10)

使用
car::scatter3d()
,我试图创建一个具有回归曲面的三维图形,该曲面指示分类变量和连续变量之间的交互作用。部分遵循代码,我得到了下图

这个数字显然是错误的,因为回归曲面没有达到分类变量的某个值。问题可能在于使用了
rgl::persp3d()
(下面代码的最后一块),但我无法确定我到底做错了什么。有人能告诉我我遗漏了什么以及如何解决问题吗

library(rgl)
library(car)
n <- 100
set.seed(1)
x <- runif(n, 0, 10)
set.seed(1)
z <- sample(c(0, 1), n, replace = TRUE)
set.seed(1)
y <- 0.5 * x + 0.1 * z + 0.3 * x * z + rnorm(n, sd = 1.5)
d <- data.frame(x, z, y)
scatter3d(y ~ x + z, data = d, 
  xlab = "continuous", zlab = "categorical", ylab = "outcome",
  residuals = FALSE, surface = FALSE
)

d2 <- d
d2$x <- d$x / (max(d$x) - min(d$x))
d2$y <- d$y / (max(d$y) - min(d$y))
mod <- lm(y ~ x * z, data = d2)
grd <- expand.grid(x = unique(d2$x), z = unique(d2$z))
grd$pred <- predict(mod, newdata = grd)
grd <- grd[order(grd$z, grd$x), ]

# The problem is likely to lie somewhere below.
persp3d(x = unique(grd$x), y = unique(grd$z), 
  z = matrix(grd$pred, length(unique(grd$z)), length(unique(grd$x))), 
  alpha = 0.5,
  col = "blue",
  add = TRUE,
  xlab = "", ylab = "", zlab = ""
)
库(rgl)
图书馆(汽车)

n如果
z
是一个因子,那么根据定义,它只能取值
0
1
;介于0和1之间的值没有意义。因此,没有3D曲面,有两条曲线:当z=0时y vs x,当z=1时y vs x。我想证明,作为自变量的因子只是连续变量回归建模的一个特例,为此,我认为有这样一个图可能会有所帮助(因为我用了一个类似的连续变量的数字)。但你是对的,曲面的大部分是没有意义的,绘制曲面可能会产生误导…也许解决了你的问题?我想只有
z
的公式会改变。。。