を使用してcar::scatter3d()
、カテゴリ変数と連続変数の間の相互作用を示す回帰曲面を持つ 3D 図形を作成しようとしています。ここのコードに部分的に従うと、以下の図が得られました。
回帰曲面がカテゴリ変数の値の 1 つに到達しないという点で、この図は明らかに間違っています。おそらく問題は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 = ""
)
car::scatter3d()
すでにいくつかの図をcar::scatter3d()
作成しており、この図もそれらと一致させたいので、元のグラフの描画に固執することを好みます。