2015-03-21 6 views
2

Я хочу сделать прогноз на рост ребенка, исходя из высоты отцов + матери и пола и визуализировать это.Добавление 2-й плоскости к рассеянному плану3d

Без гендерной переменной я все еще могу представить это на трехмерном графике.

Но когда я добавляю пол, я бы хотел иметь 2 поверхностных графика, один для пола == мужской и один для пола == женский. Есть ли элегантный способ исправить эту гендерную переменную в модели 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) 

scatterplot3d plot

Подгонка в том числе пола выглядит следующим образом:

> fit2 

Call: 
lm(formula = childHeight ~ mother + father + gender) 

Coefficients: 
(Intercept)  mother  father gendermale 
    16.5212  0.3176  0.3928  5.2150 

Но когда я tryto участок два поверхностных струй для обоих полов я получаю сообщение об ошибке:

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 

I «Мне нравится иметь что-то подобное, знает ли кто-нибудь, как это возможно?

s3d$plane3d(fit2(gendermale=1)) 
s3d$plane3d(fit2(gendermale=0)) 

ответ

2

Вам нужно настроить цвета (я использовал только «красный» для 2-го самолета ради демонстрации), но попробуйте это:

s3d$plane3d(fit2$coefficients[1:3]) 
s3d$plane3d(fit2$coefficients[1:3] + c(fit2$coefficients["gendermale"], 0, 0), col = "red") 

Идея игнорирования gendermale коэффициент для 1-й плоскости (где gender=="female") и добавление его к перехвату для второй плоскости (где gender=="male").

enter image description here