将线段添加到密度图

发布于 2025-02-01 18:57:18 字数 608 浏览 2 评论 0原文

我想在图表中添加一条线,该行指示了平均值:

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)

我需要输入段(y1 =)以确保上限是内核密度图的什么值?

I would like to add a line to my plot that indicates the mean:

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)

What value do I need to enter for segments(y1 = ) to ensure that the upper bound is the kernel density plot?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

他不在意 2025-02-08 18:57:18

要从离散点的密度估计值以某个X值计算Y值,您将需要进行某种插值。一种方法是使用大约的线性插值:

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

其中,xy给出要插值的点,xout 插值完成的X值的(向量)(请参阅of code>),

因此代码完全是:

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)

To calculate the y-value at some x-value from a density estimate at discrete points, you will need to do some sort of interpolation. One way is to use linear interpolation with approx:

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

where, x and y give the points to be interpolated, and xout the (vector of) x-values where the interpolation is done (See ?approx)

So altogether the code is:

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)
不必了 2025-02-08 18:57:18

您也可以使用Abline喜欢:

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")
abline(v = mode_X1, col = "red", lty = 1, lwd = 1)
abline(v = mean_X1, col = "red", lty = 5, lwd = 2)

output:

”在此处输入图像描述”

You could also use abline like this:

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")
abline(v = mode_X1, col = "red", lty = 1, lwd = 1)
abline(v = mean_X1, col = "red", lty = 5, lwd = 2)

Output:

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文