【问题标题】:geom_smooth on a subset of data数据子集上的 geom_smooth
【发布时间】:2013-06-16 05:28:29
【问题描述】:

这是一些数据和图表:

set.seed(18)
data = data.frame(y=c(rep(0:1,3),rnorm(18,mean=0.5,sd=0.1)),colour=rep(1:2,12),x=rep(1:4,each=6))

ggplot(data,aes(x=x,y=y,colour=factor(colour)))+geom_point()+ geom_smooth(method='lm',formula=y~x,se=F)

如您所见,线性回归受 x=1 的值的影响很大。 我可以得到为 x >= 2 计算的线性回归,但显示 x=1 的值(y 等于 0 或 1)。 除了线性回归之外,结果图将完全相同。他们不会受到 abscisse = 1 值的影响

【问题讨论】:

    标签: r ggplot2 regression subset


    【解决方案1】:

    就像geom_smooth(data=subset(data, x >= 2), ...) 一样简单。如果此图仅适用于您自己并不重要,但要意识到,如果您不提及回归是如何执行的,这样的事情会误导其他人。我建议更改排除点的透明度。

    ggplot(data,aes(x=x,y=y,colour=factor(colour)))+
    geom_point(data=subset(data, x >= 2)) + geom_point(data=subset(data, x < 2), alpha=.2) +
    geom_smooth(data=subset(data, x >= 2), method='lm',formula=y~x,se=F)
    

    【讨论】:

    • 啊,我喜欢简单的解决方案!非常感谢。也感谢您的建议和透明度技巧。
    • 如果此解决方案在我的数据集上产生此错误“美学必须是长度 1 或与数据相同”,我该怎么办?
    【解决方案2】:

    常规的lm 函数有一个weights 参数,您可以使用该参数为特定观察分配权重。通过这种方式,您可以清楚地了解观察对结果的影响。我认为这是处理问题的一般方法,而不是对数据进行子集化。当然,临时分配权重对于分析的统计可靠性并不是一个好兆头。总是最好在权重背后有一个基本原理,例如低权重的观测具有更高的不确定性。

    我认为 ggplot2 在后台使用 lm 函数,因此您应该能够传递 weights 参数。您可以通过美学(aes)添加权重,假设权重存储在向量中:

    ggplot(data,aes(x=x,y=y,colour=factor(colour))) + 
        geom_point()+ stat_smooth(aes(weight = runif(nrow(data))), method='lm')
    

    您也可以将权重放在数据集中的列中:

    ggplot(data,aes(x=x,y=y,colour=factor(colour))) + 
        geom_point()+ stat_smooth(aes(weight = weight), method='lm')
    

    列在哪里被称为weight

    【讨论】:

      【解决方案3】:

      我尝试了@Matthew Plourde 的解决方案,但subset 对我不起作用。与原始数据相比,当我使用子集时,它没有任何改变。我用filter 替换了subset,它起作用了:

      ggplot(data,aes(x=x,y=y,colour=factor(colour)))+
      geom_point(data=data[data$x >= 2,]) + geom_point(data=data[data$x < 2,], alpha=.2) +
      geom_smooth(data=data[data$x >= 2,], method='lm',formula=y~x,se=F)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多