繁体   English   中英

F 分布的密度图 (df1=1)。 理论还是模拟?

[英]Density plot of the F-distribution (df1=1). Theoretical or simulated?

我正在绘制R中 F(1,49) 的密度。 当值接近零时,模拟图似乎与理论图匹配。 在此处输入图像描述

set.seed(123)
val <- rf(1000, df1=1, df2=49)
plot(density(val), yaxt="n",ylab="",xlab="Observation",
     main=expression(paste("Density plot (",italic(n),"=1000, ",italic(df)[1],"=1, ",italic(df)[2],"=49)")),
     lwd=2)
curve(df(x, df1=1, df2=49), from=0, to=10, add=T, col="red",lwd=2,lty=2)
legend("topright",c("Theoretical","Simulated"),
       col=c("red","black"),lty=c(2,1),bty="n")

使用density(val, from = 0)可以让你更接近,尽管仍然不完美。 众所周知,边界附近的密度很难以令人满意的方式计算。

在此处输入图像描述

默认情况下, density使用高斯核来估计给定点的概率密度。 实际上,这意味着在每个点发现一个观测值,一个正态密度曲线被放置在那里,其中心位于观测值。 所有这些法向密度相加,然后对结果进行归一化,使曲线下的面积为 1。

如果观察结果具有集中趋势,则此方法效果很好,但当存在尖锐边界时会给出不切实际的结果(尝试plot(density(runif(1000)))作为主要示例)。

当您有非常高的点密度接近零但没有低于零时,所有正常内核的左尾将“溢出”为负值,从而给出与理论密度不匹配的高斯类型。

这意味着如果您在 0 处有一个尖锐的边界,您应该删除介于零和平滑内核的大约两个标准偏差之间的模拟密度值 - 低于此值的任何值都会产生误导。

由于我们可以使用densitybw参数来控制平滑内核的标准偏差,并使用ggplot轻松控制绘制哪些 x 值,因此我们将通过执行以下操作获得更合理的结果:

library(ggplot2)

ggplot(as.data.frame(density(val), bw = 0.1), aes(x, y)) + 
  geom_line(aes(col = "Simulated"), na.rm = TRUE) + 
  geom_function(fun = ~ df(.x, df1 = 1, df2 = 49), 
                aes(col = "Theoretical"), lty = 2) +
  lims(x = c(0.2, 12)) +
  theme_classic(base_size = 16) +
  labs(title = expression(paste("Density plot (",italic(n),"=1000, ",
                                italic(df)[1],"=1, ",italic(df)[2],"=49)")),
       x = "Observation", y = "") +
  scale_color_manual(values = c("black", "red"), name = "")

在此处输入图像描述

kde1dlogspline包对于这种密度来说还不错。

sims <- rf(1500, 1, 49)

library(kde1d)
kd <- kde1d(sims, bw = 1, xmin = 0)
plot(kd, col = "red", xlim = c(0, 2), ylim = c(0, 2))
curve(df(x, 1, 49), add = TRUE)

library(logspline)
fit <- logspline(sims, lbound = 0, knots = c(0, 0.5, 1, 1.5, 2))
plot(fit, col = "red", xlim = c(0, 2), ylim = c(0, 2))
curve(df(x, 1, 49), add = TRUE)

在此处输入图像描述

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM