0

我正在尝试创建一个 qqplot 并针对 25% N(μ=0,σ=4) 和 75% N(μ=4,σ=2) 的正态混合分布运行 KS 测试。我怎样才能使我的 qqplot 和 KS 测试适应这个分布?我不认为我的 abline 是正确的,我的 KS 测试并没有真正正确地反映分布。

任何帮助,将不胜感激。

set.seed(4711)
n = 500
P = ppoints(n)
Q = qnorm(P)

dt <- sample(c(1,2), prob= c(0.25,0.75), size = n, replace = T)
x <- c()
for(i in 1:n){
  if(dt[i] == 1) x[i]=rnorm(1, mean = 0, sd = 4) else x[i] = rnorm(1, mean = 4, sd = 2)
}

hist(x, prob = T, breaks = 27, col = "lightgreen", main = "Mixture Normal")
curve(0.25*dnorm(x, mean = 0, sd = 4) + 0.75*dnorm(x, mean = 4, sd = 2), add = T, col = 2, lwd = 3, lty = 2)

qqplot(Q, x)
abline(0,1)


ks.test(x, 'pnorm')
4

1 回答 1

1

获得更明智的 qqplot 的方法,即“代表“理论”的“直线”(或在本例中的两个样本版本的情况下是经验的)是适当地缩放参数。一个“qqplot”为单样本KS检验实际上是“半参数”,即首先提取被测样本的均值和标准差,然后用于阶统计图的缩放。所以这样做:

 qqplot(Q, scale(x) )  # make the mean 0 and the SD=1
 abline(0,1)

在此处输入图像描述

ks.test(x, 'pnorm')
#------------------
    One-sample Kolmogorov-Smirnov test

data:  x
D = 0.70763, p-value < 2.2e-16
alternative hypothesis: two-sided
于 2021-02-28T03:31:58.073 回答