R - 将SD区域作为虚线添加到正态分布

时间:2013-11-19 18:03:49

标签: r normal-distribution standard-deviation

我有以下R脚本生成以下图像。我想将SD区域添加到此正常曲线(正负3 SD)。换句话说,两条线表示68%的区域,依此类推。您可以看到我正在谈论的here行的示例。

g = c(1,2,3,4,5,6,7,8,9,2,3,3,3,4,4,4,5,5,6,6,6,6,6,7,8)
h<-hist(g, breaks=10, density=10, col="lightgray", xlab="Accuracy", main="Overall") 
xfit<-seq(min(g),max(g),length=40) 
yfit<-dnorm(xfit,mean=mean(g),sd=sd(g)) 
yfit <- yfit*diff(h$mids[1:2])*length(g) 
lines(xfit, yfit, col="black", lwd=2)

enter image description here

1 个答案:

答案 0 :(得分:3)

您需要使用?segments。试试这个:

x.vals <- c(mean(g)-(1:3*sd(g)), mean(g), mean(g)+(1:3*sd(g)))
y.vals <- dnorm(x.vals, mean=mean(g),sd=sd(g))*diff(h$mids[1:2])*length(g)
segments(x0=x.vals, y0=0, x1=x.vals, y1=y.vals)

enter image description here

请注意,并非所有SD都显示在图表上。为了使原始图更宽,您可以在xlim=c(-3,13)的调用中使用hist()(并且您还需要相应地更改xfit的范围。)