首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从一个数据集到另一个数据集的黄土线

从一个数据集到另一个数据集的黄土线
EN

Stack Overflow用户
提问于 2015-05-13 17:34:17
回答 1查看 279关注 0票数 2

下面的函数计算二进制平均值,对图上的bin点进行相对于每个bin中的观察数的大小,并通过bin方法绘制一条较低的线。但是,我不想通过bin表示绘制低空线,而是通过原始数据集绘制这条线,以便低空线上的误差带表示实际数据集中的不确定性,而不是二进制平均值中的不确定性。如何修改geom_smooth(),使其使用df而不是dfplot绘制行

代码语言:javascript
复制
library(fields)
library(ggplot2)

binplot <- function(df, yvar, xvar, sub = FALSE, N = 50, size = 40, xlabel = "X", ylabel = "Y"){
  if(sub != FALSE){
    df <- subset(df, eval(parse(text = sub)))

  }

  out <- stats.bin(df[,xvar], df[,yvar], N= N)
  x <- out$centers
  y <- out$stats[ c("mean"),]
  n <-  out$stats[ c("N"),] 
  dfplot <- as.data.frame(cbind(x,y,n))

  if(size != FALSE){
    sizes <- n * (size/max(n))

  }else{
    sizes = 3
  }

    ggplot(dfplot, aes(x,y)) +
      xlab(xlabel) +
      ylab(ylabel) +
      geom_point(shape=1, size = sizes) +
      geom_smooth() 
}

下面是一个可重复的示例,它演示了该函数当前的工作方式:

代码语言:javascript
复制
sampleSize <- 10000
x1 <- rnorm(n=sampleSize, mean = 0, sd = 4)
y1 <-  x1 * 2 + x1^2 * .3 +  rnorm(n=sampleSize, mean = 5, sd = 10)
binplot(data.frame(x1,y1), "y1", "x1", N = 25)

正如你所看到的,如果每个垃圾箱都有相同数量的观测值,那么低空线上的误差带就会反映出不确定性,但事实并非如此。在极端的垃圾箱有更少的坚持(如点的大小说明)和低线的错误带应该反映这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-13 18:23:14

您可以显式地设置每个层的data=参数。您还需要更改美学映射,因为原始的data.frame有不同的列名。只需将geom_smooth调用更改为

代码语言:javascript
复制
geom_smooth(data=df, aes_string(xvar, yvar)) 

对于示例数据,将返回

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30221694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档