Я думаю, вы рисуете не ту плоскость.Документы немного скудны, но кажется, что s3d$plane3d
предполагает, что z
- переменная ответа, x
- первый предиктор, а y
- второй.Но даже если я изменю ваш код, чтобы использовать эти предположения, например,
library(scatterplot3d)
library(ISLR)
s3d <- with(College, scatterplot3d(z=Top10perc, x=S.F.Ratio, y=PhD))
my.lm <- lm(Top10perc ~ S.F.Ratio + PhD, data = College)
plane <- s3d$plane3d(my.lm, lty.box = "solid", draw_polygon = TRUE)
, я не получаю хороший график:
Похоже, что scatterplot3d
не обрезает плоскость на границах ограничительной рамки.
Я получаю лучшую плоскость, используя rgl
,
library(rgl)
library(ISLR)
with(College, plot3d(x=Top10perc, y=S.F.Ratio, z=PhD))
my.lm <- lm(Top10perc ~ S.F.Ratio + PhD, data = College)
coefs <- coef(my.lm)
planes3d(a = -1, b = coefs["S.F.Ratio"], c = coefs["PhD"], d = coefs["(Intercept)"],
alpha = 0.2)
Сюжет можно поворачивать, но он не выглядит так же хорошо, как вывод scatterplot3d
(на плоскости нет сетки), и его сложнее рисовать: поддержка не поддерживаетсяlm()
приводит к rgl::planes3d
, поэтому вам необходимо внимательно прочитать страницу справки.Может быть, кто-то еще может предложить лучшую альтернативу.