r - 将线段添加到密度图

标签 r plot

我想在我的图中添加一条线来指示平均值:

X1 <- rnorm(100)
# Kernel density estimates
density_X1 <- density(X1)
# Compute mode
mode_X1 <- density_X1$x[which.max(density_X1$y)]; mode_X1
# Compute mean
mean_X1 <- mean(X1)
# Create plot 
plot(density_X1, main = "Kernel density estimates", xlab = "X1", ylab = "density")
# Add line for mode
segments(x0 = mode_X1, y0 = 0, x1 = mode_X1, y1 = density_X1$y, col = "red", lty = 1, lwd = 1)
# Add line for mean
segments(x0 = mean_X1, y0 = 0, x1 = mean_X1, y1 = , col = "red", lty = 5, lwd = 2)

我需要为segments(y1 = )输入什么值才能确保上限是核密度图?

最佳答案

要根据离散点的密度估计计算某个 x 值的 y 值,您需要进行某种插值。一种方法是使用 approx 的线性插值:

approx(x = density_X1$x, y = density_X1$y, xout = mean_X1)$y

其中,xy 给出要插值的点,xout 是插值的 x 值(向量)完成(参见?大约)

所以代码总共是:

set.seed(72405277)
X1 <- rnorm(100)
# Kernel density estimates
density_X1 <- density(X1)
# Compute mode
mdIdx <- which.max(density_X1$y) # store and resuse
mode_X1 <- density_X1$x[mdIdx]; 
# Compute mean
mean_X1 <- mean(X1)
# Create plot 
plot(density_X1, main = "Kernel density estimates", xlab = "X1", ylab = "density")
# Add line for mode
segments(x0 = mode_X1, y0 = 0, x1 = mode_X1, y1 = density_X1$y[mdIdx], col = "red", lty = 1, lwd = 1)
# Add line for mean
yax2 <- approx(x = density_X1$x, y = density_X1$y, xout = mean_X1)$y
segments(x0 = mean_X1, y0 = 0, x1 = mean_X1, y1 = yax2, col = "blue", lty = 5, lwd = 2)

关于r - 将线段添加到密度图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72405277/

相关文章:

jquery - renderUI 中 Shiny 的语义 Ui 元素

ruby - Heroku Rails 应用程序的数据挖掘/统计分析选项?

javascript - Highcharts 中 3D 条形图的不同深度

python - 绘制多轴对象数组

python-2.7 - 使用matplotlib中的一组标量值为球体表面着色

matlab - MATLAB 中绘图的多个 x 轴和 y 轴

r - 扩展 R 的汇总函数(或创建具有类似输出的新函数)以将因子显示为总数的百分比

r - 在 R 中平滑方向(角度)数据

r - 我想画一个区域,但我不知道怎么画

python - 在情节图例中写 $\sqrt(2)$ 而不是 1.414