☰
使用scitable包轻松绘制3d交互效应可视化分析
2026/10/22 13:12:41 网站建设 项目流程

在SCI文章中,交互效应表格(通常是表五)能为文章锦上添花,增加文章的信服力,增加结果的可信程度,还能进行数据挖掘。什么是亚组,通常就是特殊类 型人群,比如男女,种族等,就是说你的数据放入特殊人群中结果还可靠吗?如果在各个特殊人群中,你的结果很稳定,说明你的结论很可靠。如果亚组的结论和你的数据数据结论相反,你可以拿来做个新论题。还可以比较不同亚组之间有无区别,比如做了心脏支架和没做支架的区别,可以发现很多新思路,易于数据挖掘。


其实交互作用就是一个变量通过对另一个变量的影响,导致结局变量改变,最常见的就是我们药物之间的交互作用,比如β受体阻滞剂对血糖有影响,同时和降糖药使用可能会加强或者减弱降糖药的降糖效果,这就是交互作用。,既往我已经介绍过多篇交互效应文章,比如:
R语言logistic回归交互项(交互作用)的可视化分析2

这个文章介绍的是随着年龄增大,流产2次以上的比没有流产的女性,不孕症的概率明显增大,因此流产和年龄对不孕症的结局存在交互影响。但是对于连续变量,这样的图形不好表示交互效应,根据粉丝要求,编写了ggsci3d函数,能够一步到位,生成交互效应数据并绘图,
下面我来演示一下,先导入数据和R包

library(foreign)library(mgcv)library(rms)library(ggscitable)library(scitable)be<-read.spss("E:/r/test/ozone.sav",use.value.labels=F,to.data.frame=T)names(be)


数据中有七个变量,ozon每日臭氧水平为结局变量,Inversion base height(ibh)反转基准高度,Pressure gradient (mm Hg) 压力梯度(mm Hg),Visibility (miles) 能见度(英里),Temperature (degrees F) 温度(华氏度),Day of the year日期,vh我也不知道是什么,反正就是一参数,这里所有的变量都是连续的

假设我想知道ibh和dpg对结局臭氧(ozon)的影响

out<-ggsci3d(x=c("ibh","dpg"),y="ozon",data=be,username=username,token=token)


这里m1和m2表示ibh和dpg,预测值就是臭氧,就得到一个随着ibh和dpg变化,臭氧改变的3D图,可以看到并不是ibh和dpg最大,就是臭氧浓度最高,而是一个曲线的变化,有一个峰值。

还可以进一步假如协变量的影响,假设这里协变量是"temp",“vis”

out<-ggsci3d(x=c("ibh","dpg"),y="ozon",cov=c("temp","vis"),data=be,username=username,token=token)


可以自定义颜色,有"topo", “heat”, “cm”, “terrain”, “gray” ,"bw"这些颜色参数可以选择,

out<-ggsci3d(x=c("ibh","dpg"),y="ozon",cov=c("temp","vis"),color="cm",data=be,username=username,token=token)

咱们还可以增加区域网格数,这样可以更加详细的显示曲线波动

out<-ggsci3d(x=c("ibh","dpg"),y="ozon",cov=c("temp","vis"),color="cm",n.grid=60,data=be,username=username,token=token)


给x轴y轴z轴都打上标签

out<-ggsci3d(x=c("ibh","dpg"),y="ozon",cov=c("temp","vis"),color="cm",n.grid=60,data=be,xlab="高度",ylab="压力",main="3D图",zlab="臭氧",username=username,token=token)

还可以更换其他计算3D图的算法

out<-ggsci3d(x=c("ibh","dpg"),y="ozon",data=be,type="s",username=username,token=token)


还可以使用等高线来表示

out<-ggsci3d(x=c("ibh","dpg"),y="ozon",data=be,plot.type="contour",username=username,token=token)


这个等高线画得明显不如咱们的ggconinteraction函数绘制效果,如果想绘制等高线的可以看文章
R语言基于ggscitable包复现一篇3.5分的文章的连续变量交互效应(交互作用)的可视化图


ggsci3d函数还生成有绘图数据,你可以借助绘图数据,使用其他R包绘图也是可以的
先把数据提取出来

library(mgcv)library(rgl)library(plotly)x<-out[["plotdt"]][["x"]]y<-out[["plotdt"]][["y"]]z<-out[["plotdt"]][["z"]]使用plot_ly函数绘图 plot_ly(x=x,y=y,z=z,type="surface")%>%layout(scene=list(xaxis=list(title="x1"),yaxis=list(title="x2"),zaxis=list(title="fit")))


这个图是能旋转的,有需要旋转的可以使用这个函数绘图
使用persp3d函数绘图

persp3d(x=x,y=y,z=z,xlab="x1",ylab="x2",zlab="fit")


文字表达有限,下面视频更加精彩

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询