我的分布正常,分布均匀。我想计算一个比率:正态分布的密度,超过均匀密度。然后我想测试这个比率的正常性。
ht <- runif(3000, 1, 18585056) # Uniform distribution
hm <- rnorm(35, 10000000, 5000000) # Normal distribution
hmd <- density(hm, from=0, to=18585056) # Kernel density of distributions over range
htd <- density(ht, from=0, to=18585056)
ratio <- hmd$y/htd$y # Ratio of kernel density values
上面的发布hm
和ht
是我的实验数据显示的示例;我将实际使用的向量不是在R中随机生成的。
我知道我可以从Q-Q图的相关系数中了解正态性:
qqp <- qqnorm(hm)
cor(qqp$x,qqp$y)
对于正常分布的hm
,这会给出接近1的值。
有没有办法确定密度向量的正态性?例如hmd
和ratio
。
(其他信息:hm
和ht
正在对长度为18585056
的基因组中的纯合和杂合SNP进行建模
答案 0 :(得分:1)
首先,这确实是一个统计问题;您应该考虑将其发布在stats.stackexchange.com上 - 您可能会得到更好的答案。
其次,对你的问题的简短回答是“测试两个密度函数的比例以保持正常”并不是一个有意义的想法。如评论中所述,两个密度函数的比率不是密度函数。除此之外,密度函数必须积分为1 over(-Inf,+ Inf),这个比率不会(通常)。
然而,测试两个随机变量的比率的分布是否正常是有意义的。如果您知道分子是正态分布且分母是均匀分布的,那么该比率肯定不正态分布,如下面斜杠分布的讨论中所示。
如果你不知道分子和分母的分布,但只是随机样本,你应该计算随机变量的比率,并测试正态性。在您的情况下(进行少量编辑):
set.seed(123)
ht <- runif(3000, 1, 18585056)
hm <- rnorm(3500, 10000000, 5000000)
Z <- sample(hm,1000)/sample(ht,1000) # numer. and denom. must be same length
par(mfrow=c(1,2))
# histogram of Z
hist(Z,xlim=c(-5,5), breaks=c(-Inf,seq(-5,5,0.2),Inf),freq=F, ylim=c(0,.4))
# normal Q-Q plot
qqnorm(Z,ylim=c(-5,5))
qqline(Z,xlim=c(-5,5),lty=2,col="blue")
显然,比率分布不正常。
斜线分发
在特殊情况下
X~N [0,1] =φ(x)( - Inf≤x≤Inf),
Y~U [0,1] = 1(0≤x≤1); 0其他地方
Z = X / Y~ [φ(0) - φ(x)] / x 2
即,随机变量形成为两个其他(独立)随机变量的比率,分子分布为N(0,1),分母分布为U(0,1),具有{{3} },如上所述。我们可以在R代码中显示如下
set.seed(123)
X <- rnorm(10000)
Y <- runif(10000)
Z <- X/Y
dslash <- function(x) (dnorm(0)-dnorm(x))/x^2
x <- seq(-5,5,0.02)
par(mfrow=c(1,2))
hist(Z,xlim=c(-5,5), breaks=c(-Inf,seq(-5,5,0.2),Inf),freq=F, ylim=c(0,.4))
lines(x,dslash(x),xlim=c(-5,5),col="red")
lines(x,dnorm(x),xlim=c(-5,5),col="blue",lty=2)
qqnorm(Z,ylim=c(-5,5))
qqline(Z,xlim=c(-5,5),lty=2,col="blue")
条形代表Z = X / Y的直方图,红色曲线是斜线分布,蓝色曲线是N [0,1]的pdf供参考。因为红色曲线是“钟形的”,所以有一种诱惑,认为Z是正态分布的,只是方差较大。 Q-Q图清楚地表明,不是。斜线分布的尾部远远大于正态分布的预期。