将第二个平面添加到 scatterplot3d
Adding a 2nd plane to a scatterplot3d
我想根据父亲+母亲的身高和性别预测 child 的身高,并将其可视化。
没有性别变量,我仍然可以在 3D 图形中将其可视化。
但是当我添加性别时,我想要 2 个曲面图,一个用于 gender==male,一个用于 gender==female。有没有一种优雅的方法来修复 fit2
模型中的这个性别变量,以便我可以绘制两者?
library(fields)
library(scatterplot3d)
library(ggplot2)
library(UsingR)
data(GaltonFamilies)
attach(GaltonFamilies)
fit <- lm(childHeight ~ mother + father)
fit2 <- lm(childHeight ~ mother + father + gender)
colorSet <- tim.colors(2)
s3d <- scatterplot3d(father,mother,childHeight,color=colorSet[gender])
detach(GaltonFamilies)
s3d$plane3d(fit)
包括性别在内的适合度如下:
> fit2
Call:
lm(formula = childHeight ~ mother + father + gender)
Coefficients:
(Intercept) mother father gendermale
16.5212 0.3176 0.3928 5.2150
但是当我尝试为两种性别绘制两个表面平面时,我得到一个错误:
s3d$plane3d(fit2)
Error in segments(x, z1, x + y.max * yx.f, z2 + yz.f * y.max, lty = ltya, :
cannot mix zero-length and non-zero-length coordinates
我想要这样的东西,有人知道这怎么可能吗?
s3d$plane3d(fit2(gendermale=1))
s3d$plane3d(fit2(gendermale=0))
您需要调整颜色(为了演示,我只是将 "red" 用于第二个平面),但试试这个:
s3d$plane3d(fit2$coefficients[1:3])
s3d$plane3d(fit2$coefficients[1:3] + c(fit2$coefficients["gendermale"], 0, 0), col = "red")
想法是忽略第一个平面(gender=="female"
)的 gendermale
系数,并将其添加到第二个平面(gender=="male"
)的截距。
我想根据父亲+母亲的身高和性别预测 child 的身高,并将其可视化。
没有性别变量,我仍然可以在 3D 图形中将其可视化。
但是当我添加性别时,我想要 2 个曲面图,一个用于 gender==male,一个用于 gender==female。有没有一种优雅的方法来修复 fit2
模型中的这个性别变量,以便我可以绘制两者?
library(fields)
library(scatterplot3d)
library(ggplot2)
library(UsingR)
data(GaltonFamilies)
attach(GaltonFamilies)
fit <- lm(childHeight ~ mother + father)
fit2 <- lm(childHeight ~ mother + father + gender)
colorSet <- tim.colors(2)
s3d <- scatterplot3d(father,mother,childHeight,color=colorSet[gender])
detach(GaltonFamilies)
s3d$plane3d(fit)
包括性别在内的适合度如下:
> fit2
Call:
lm(formula = childHeight ~ mother + father + gender)
Coefficients:
(Intercept) mother father gendermale
16.5212 0.3176 0.3928 5.2150
但是当我尝试为两种性别绘制两个表面平面时,我得到一个错误:
s3d$plane3d(fit2)
Error in segments(x, z1, x + y.max * yx.f, z2 + yz.f * y.max, lty = ltya, :
cannot mix zero-length and non-zero-length coordinates
我想要这样的东西,有人知道这怎么可能吗?
s3d$plane3d(fit2(gendermale=1))
s3d$plane3d(fit2(gendermale=0))
您需要调整颜色(为了演示,我只是将 "red" 用于第二个平面),但试试这个:
s3d$plane3d(fit2$coefficients[1:3])
s3d$plane3d(fit2$coefficients[1:3] + c(fit2$coefficients["gendermale"], 0, 0), col = "red")
想法是忽略第一个平面(gender=="female"
)的 gendermale
系数,并将其添加到第二个平面(gender=="male"
)的截距。