【问题标题】:Histogram with normal curve for Larger Dataset具有较大数据集的正态曲线的直方图
【发布时间】:2012-06-12 13:47:08
【问题描述】:

我是 R 新手,我正在尝试为以下数字绘制直方图

输入.txt

a b c 1.111 
d e f 2.3433 
g h i 9.87667 
............ 
............

总记录 - 2444910

最大值 - 142701.38999976

所以,到目前为止我已经尝试过了

setwd ("/path/")
data <- read.table ("input.txt", sep="\t", header=F)
x <-data$V4
bins = seq(0,150000,by=10000)
h <- hist(x, breaks=bins, probability=TRUE)
s = sd(x)
m = mean(x)
curve(dnorm(x, mean=m, sd=s), add=TRUE, lwd=3, col="red")
lines(density(x), col="blue")
abline(v=mean(x),col="blue")
mtext(paste("mean ", round(mean(x),1), "; sd ", round(sd(x),1), "; N ",length(x),sep=""), side=1, cex=.75)
dev.off()

但是,我只能在 (0,0) 坐标附近获得一个直方图条。任何帮助表示赞赏。

【问题讨论】:

  • 您是否检查了typeof(data$V4)(或is.numeric(data$V4))以确保它仍然是数字?您是否确保有多个值大于您的第一个 bin 值 10 000?也可以看看mmedian(x) 的值。
  • 这样做:table(cut(data$V4, bins)),....我猜你得到了一个你没想到的正确结果。
  • 我的第一个值从 2.1111775 开始,最终值是我在问题中发布的最大值。
  • @Dwin - 我在哪里添加 table(cut(data$V4, bins)) 在我的代码中。对不起,我是 R 的新手。我很确定垃圾箱的数量让我发疯。我的输出图像中的 x 轴是这样的 0-50000-100000-150000。我的 Y 轴的密度值范围从 o 到 5e-04。谢谢
  • 只需在控制台提示符下输入代码。关键是您的数据几乎都在第一个 bin 中。你似乎还没明白。

标签: r histogram


【解决方案1】:
dat <- data.frame(V4=c(runif(10000, 1,5000), 149999))
hist(dat$V4, breaks=c(seq(0,5000,100), 150000) )

排除异常值:

hist(dat$V4[dat$V4 <5000], breaks=c(seq(0,5000,100)) )

【讨论】:

  • 它仍然会生成相同的绘图 DWin。没运气。 :(
  • 好吧,我用上面的例子测试了它,它返回了预期的结果。如果您不喜欢这些结果,则需要通过排除异常值来修改数据。
  • 感谢 DWin。您能告诉我如何排除数据集中的异常值吗?感谢您的宝贵时间。
猜你喜欢
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
  • 2019-11-24
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 2019-11-04
  • 2013-12-03
相关资源
最近更新 更多