在 R 中的一个图中绘制来自自己模型的两个 3D 图形

Plot two 3D graphics from own models in one plot in R

我有这样的模型

lmer(response ~ poly(pred1, 2) * poly(pred2, 2) * grouping_variable ...)

由于我的分组变量有两个级别,我想在一个图中绘制两个 3D 图形,如下所示:

这是通过 car 包中的 scatter3d 完成的。不幸的是,没有选择绘制自己的模型。有一些选项可供选择(线性、二次...),但我想绘制我的模型。

我能够使用 plot3D 包中的 scatter3D 绘制我自己的模型,但我找不到用于绘制分组变量的两个水平的选项。

你有什么想法吗?我该如何实现?

下面是一些示例数据(我不太擅长模拟数据,但我认为应该可以):

library(car)
library(dplyr)
X <- seq(76, 135) + rnorm(sd = 2, n = 60) 
Y <- seq(65, 365, length.out = 60) + rnorm(sd = 4, n = 60)
Test.grid <-  expand.grid(X = X, Y = Y)
Test.grid$A <- 1
Test.grid$Z <- 2*X + 0.5*Y 
df1 <- sample_n(Test.grid, 60)
df2 <- df1 %>% mutate(A = 2, Y = Y + 50)
Test <- rbind(df1, df2)
X <- Test$X
Y <- Test$Y
Z <- Test$Z
scatter3d(x=X, y=Y, z=Z, groups = as.factor(Test$A), grid = FALSE, fit = "linear",  surface.col = c("red", "black"))

plot3D 包中的所有命令都包含一个命令 add = T。这样就很容易绘制第二个表面,只需将 add = T 添加到第二个绘图命令即可。