How to change points and add a regression to a cloudplot (using R)?

后端 未结 2 1653
旧巷少年郎
旧巷少年郎 2020-12-05 05:50

To make clear what I\'m asking I\'ve created an easy example. Step one is to create some data:

gender <- factor(rep(c(1, 2), c(43, 41)), levels = c(1, 2),         


        
相关标签:
2条回答
  • 2020-12-05 06:04

    Answer to the first half of your question, "How can I make different points for males or females when using the cloud command (for example blue and pink points insted of just blue crosses)?"

     cloud( death ~ numberofdrugs*geneticvalue , groups=gender, data=y )
    

    grouped cloud plot

    The meta-answer to this may involve some non-3d visualization. Perhaps you can use lattice or ggplot2 to split the data into small multiples? It will likely be more comprehensible and likely easier to add the regression results.

    splom( ~ data.frame( death, numberofdrugs, geneticvalue ), groups=gender, data=y )
    

    splom

    The default splom panel function is panel.pairs, and you could likely modify it to add a regression line without an enormous amount of trouble.

    ggplot2 does regressions within the plot matrix easily, but I can't get the colors to work.

    pm <- plotmatrix( y[ , 1:3], mapping = aes(color=death) )
    pm + geom_smooth(method="lm")
    

    plotmatrix

    And finally, if you really want to do a cloudplot with a regression plane, here's a way to do it using the scatterplot3d package. Note I changed the data to have a little more interesting structure to see:

    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)
    

    scatterplot3d with regression plane

    0 讨论(0)
  • 2020-12-05 06:19

    There is nice fit visualization in car package using rgl package (openGL implementation):

    require(car)
    require(rgl)
    scatter3d(death~numberofdrugs+geneticvalue, groups=y$gender, data=y, parallel=FALSE)
    

    3d fit with car package

    0 讨论(0)
提交回复
热议问题