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