R 4d曲面图逻辑回归(x、y、z、颜色)
我试图绘制一个包含4个定量变量(3个预测变量和1个响应)的二项关系的4d曲面图。 我用森林覆盖率(R 4d曲面图逻辑回归(x、y、z、颜色),r,3d,logistic-regression,rgl,R,3d,Logistic Regression,Rgl,我试图绘制一个包含4个定量变量(3个预测变量和1个响应)的二项关系的4d曲面图。 我用森林覆盖率(cov)、景观异质性(het)和捕食者丰度(abund)来解释捕食的可能性(pred)。 所以我想在图上画x=cov,y=het,z=abund和表示pred的颜色渐变。我想要一个类似的图表: 我的模型是: model <- glm(cbind(pred,npred)~ cov + het + abund + abund:cov + cov:het, data=results, family
cov
)、景观异质性(het
)和捕食者丰度(abund
)来解释捕食的可能性(pred
)。
所以我想在图上画x=cov
,y=het
,z=abund
和表示pred
的颜色渐变。我想要一个类似的图表:
我的模型是:
model <- glm(cbind(pred,npred)~ cov + het + abund + abund:cov + cov:het, data=results, family=binomial)
您的预测是三个预测变量的函数,所以您不能将它们表示为单个曲面。有两种常见的方法可以做到这一点:
misc3d::contour3d
功能绘制三维轮廓abun
,有时使用abund
:我将始终使用abun
。你也有
gg$pred < -predict(model,newdata=gg, type = "response")
要绘制等高线图,需要选择等高线标高。您可以使用
range(gg$pred)
# [1] 2.220446e-16 1.000000e+00
所以你的模型预测的概率从0到1。我想要20个介于0和1之间的轮廓,但是contour3d
函数不喜欢超出范围
轮廓,所以我将使用1/20,…,19/20:
levels <- (1:19)/20
colors <- heat.colors(19)
现在绘制一些轴,然后绘制绘图:
plot3d(gg, type = "n")
contour3d(pred, levels, het, cov, abun, color = colors, alpha = 0.5, add = TRUE)
alpha=0.2
值使表面部分透明;您可能需要尝试0和1之间的其他值,以查看您喜欢的值。这是我得到的。在R中,可以旋转绘图以从不同角度查看它,或者调用rglwidget()
以可旋转的形式保存它,以便在web浏览器上查看
我将把如何绘制第二种类型的绘图留给您来解决。您的问题没有意义:卷中每个位置的变量值都不同。你不会从那样的数据中得到曲面。您可能需要一系列曲面或三维等高线图(使用
misc3d::contour3d
),但不需要显示的曲面。我不能向您展示这些内容,因为我们没有results
变量,因此无法运行您的代码。你能总结出一组简单的预测吗?如果我的问题没有意义,我很抱歉。我在这方面有点经验不足,我还在学习。正如我上面所说,我试图理解森林覆盖率、景观异质性和捕食者的丰度如何解释捕食的可能性。我使用其他变量(例如,捕食者的丰富度、一天中的时间)进行了模型选择,最节俭的模型在上面。如果可能的话,我想用一个图表来表示这个模型。我可以用你建议的函数来表示这个模型吗?我将更新并放置我的数据集。非常感谢你。非常感谢你的剧本和提示,我从你身上学到了很多。我还有两个问题。你能告诉我是否可以添加一个像我展示的图中那样的图例吗?与ggplot有互动吗?谢谢plot3Drgl
软件包可以制作这样的图例,但我不认为它可以制作三维等高线图。(contour3Drgl函数还有其他功能。)我不知道是否有办法将图例与其他rgl
代码混合。
range(gg$pred)
# [1] 2.220446e-16 1.000000e+00
levels <- (1:19)/20
colors <- heat.colors(19)
pred <- array(gg$pred, c(length(het), length(cov), length(abun)))
plot3d(gg, type = "n")
contour3d(pred, levels, het, cov, abun, color = colors, alpha = 0.5, add = TRUE)