我想做的事情听起来很简单。我想用 R 绘制一条正常的 IQ 曲线,平均值为 100,标准差为 15。然后,我希望能够在其上覆盖数据的散点图。
有人知道怎么做吗?
我想做的事情听起来很简单。我想用 R 绘制一条正常的 IQ 曲线,平均值为 100,标准差为 15。然后,我希望能够在其上覆盖数据的散点图。
有人知道怎么做吗?
我猜你想要做的是:你想用平均值 100 和 sd = 15 绘制模型正态密度,并且你想在上面叠加一些据称遵循模型的观察值的经验密度正态密度,以便您可以可视化模型密度与经验密度的拟合程度。下面的代码应该这样做(这里,x 将是实际观察的向量,但为了说明目的,我使用混合正态分布 N(100,15) + 15*N(0,1) 生成它,即所谓的N(100,15) 分布加噪声)。
require(ggplot2)
x <- round( rnorm( 1000, 100, 15 )) + rnorm(1000)*15
dens.x <- density(x)
empir.df <- data.frame( type = 'empir', x = dens.x$x, density = dens.x$y )
norm.df <- data.frame( type = 'normal', x = 50:150, density = dnorm(50:150,100,15))
df <- rbind(empir.df, norm.df)
m <- ggplot(data = df, aes(x,density))
m + geom_line( aes(linetype = type, colour = type))
好吧,它更像是一个直方图,因为我认为您希望这些更像是一个整数舍入过程:
x<-round(rnorm(1000, 100, 15))
y<-table(x)
plot(y)
par(new=TRUE)
plot(density(x), yaxt="n", ylab="", xlab="", xaxt="n")
如果您想要叠加 dnorm 的理论值,请使用以下之一:
lines(sort(x), dnorm(sort(x), 100, 15), col="red")
-或者
points(x, dnorm(x, 100, 15))
您可以使用以下命令生成 IQ 分数 PDF:
curve(dnorm(x, 100, 15), 50, 150)
但是为什么要在密度曲线上叠加散射?恕我直言,这很不寻常......
除了其他好的答案之外,您可能对绘制多个面板感兴趣,每个面板都有自己的图表。像这样的东西。