Mar*_*lar 14 3d regression r ggplot2 lattice
为了弄清楚我在问什么,我创造了一个简单的例子.第一步是创建一些数据:
gender <- factor(rep(c(1, 2), c(43, 41)), levels = c(1, 2),labels = c("male", "female"))
numberofdrugs <- rpois(84, 50) + 1
geneticvalue <- rpois(84,75)
death <- rpois(42,50) + 15
y <- data.frame(death, numberofdrugs, geneticvalue, gender)
Run Code Online (Sandbox Code Playgroud)
所以这些是一些随机日期合并为一个data.frame.因此,从这些日期开始,我想绘制一个云,我可以在男性和女性之间进行区分,并在其中添加两个简单的回归(一个用于女性,一个用于男性).所以我已经开始了,但我无法达到我想要的程度.请看下面到目前为止我做了什么:
require(lattice)
cloud(y$death~y$numberofdrugs*geneticvalue)
Run Code Online (Sandbox Code Playgroud)

xmale <- subset(y, gender=="male")
xfemale <- subset(y, gender=="female")
death.lm.male <- lm(death~numberofdrugs+geneticvalue, data=xmale)
death.lm.female <- lm(death~numberofdrugs+geneticvalue, data=xfemale)
Run Code Online (Sandbox Code Playgroud)
如何在使用云命令时为男性或女性制作不同的点(例如蓝色和粉红色点而不仅仅是蓝色十字),如何将两个估计模型添加到云图中?
任何想法都表示赞赏!谢谢你的想法!
Ari*_*man 18
回答你问题的前半部分,"如何在使用云命令时为男性或女性制作不同的分数(例如蓝色和粉红色的点只是蓝色十字架)?"
cloud( death ~ numberofdrugs*geneticvalue , groups=gender, data=y )
Run Code Online (Sandbox Code Playgroud)

对此的元回答可能涉及一些非三维可视化.也许您可以使用lattice或ggplot2将数据拆分成小的倍数?它可能更容易理解,并且可能更容易添加回归结果.
splom( ~ data.frame( death, numberofdrugs, geneticvalue ), groups=gender, data=y )
Run Code Online (Sandbox Code Playgroud)

默认的splom面板功能是panel.pairs,您可以修改它以添加回归线而不会有太多麻烦.
ggplot2可以轻松地在绘图矩阵中进行回归,但是我无法使颜色起作用.
pm <- plotmatrix( y[ , 1:3], mapping = aes(color=death) )
pm + geom_smooth(method="lm")
Run Code Online (Sandbox Code Playgroud)

最后,如果你真的想用回归平面做一个cloudplot,这里有一种方法可以使用scatterplot3d包.注意我将数据更改为更有趣的结构,以便查看:
numberofdrugs <- rpois( 84, 50 ) + 1
geneticvalue <- numberofdrugs + rpois( 84, 75 )
death <- geneticvalue + rpois( 42, 50 ) + 15
y <- data.frame( death, numberofdrugs, geneticvalue, gender )
library(scatterplot3d)
pts <- as.numeric( as.factor(y$gender) ) + 4
s <-scatterplot3d( y$death, y$numberofdrugs, y$geneticvalue, pch=pts, type="p", highlight.3d=TRUE )
fit <- lm( y$death ~ y$numberofdrugs + y$geneticvalue )
s$plane3d(fit)
Run Code Online (Sandbox Code Playgroud)

Mar*_*rek 17
使用rgl包(openGL实现)在汽车包中有很好的拟合可视化:
require(car)
require(rgl)
scatter3d(death~numberofdrugs+geneticvalue, groups=y$gender, data=y, parallel=FALSE)
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
3751 次 |
| 最近记录: |