这是使用来自ISLR的数据集College
的示例:
library(scatterplot3d)
library(ISLR)
attach(College)
s3d <- scatterplot3d(x=Top10perc, y=S.F.Ratio, z=PhD)
my.lm <- lm(Top10perc ~ S.F.Ratio + PhD)
plane <- s3d$plane3d(my.lm, lty.box = "solid", draw_polygon = TRUE)
我想增加灰色多边形(平面)的尺寸。从scatterplot3d文档中:
自变量
draw_lines
和draw_polygon
允许选择是通过线段表示平面还是将其表示为实体曲面。polygon_args
中的列表收集要传递给底层多边形调用的参数,如果draw_polygon=TRUE
,则该多边形调用将绘制实心(或透明)平面。
polygon
函数:
polygon(x, y = NULL, density = NULL, angle = 45, border = NULL, col = NA, lty = par("lty"), ..., fillOddEven = FALSE)
我想我需要在基础的x
调用中更改y
和polygon
参数,但是我该怎么做?我可以访问它们吗?
答案 0 :(得分:0)
我认为您绘制的平面错误。该文档有点稀疏,但似乎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()
结果{1}},因此您需要仔细阅读帮助页面。也许其他人可以提供更好的选择。