1

我有一个正态分布和一个均匀分布。我想计算一个比率:正态分布的密度与均匀分布的密度。然后我想测试这个比率是否正常。

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 中随机生成的。

我知道我可以从 QQ 图的相关系数中很好地了解正态性:

qqp <- qqnorm(hm)
cor(qqp$x,qqp$y)

对于hm,它是正态分布的,这给出了一个接近 1 的值。

有没有办法确定密度向量的正态性?例如hmdratio

(附加信息:hm并且ht正在对长度为的基因组中的纯合和杂合 SNP 进行建模18585056

4

1 回答 1

1

首先,这确实是一个统计问题;您应该考虑将其发布到stats.stackexchange.com - 您可能会得到更好的答案。

其次,对您的问题的简短回答是“测试两个密度函数的正态性比率”不是一个有意义的想法。如评论中所述,两个密度函数的比率不是密度函数。除其他事项外,密度函数必须在 (-Inf,+Inf) 上积分为 1,而这个比率不会(通常)。

然而,测试两个随机变量的比率分布是否正态是有意义的。如果你知道分子是正态分布的,分母是均匀分布的,那么比率肯定不会是正态分布的,如下面斜线分布的讨论所示。

如果您不知道分子和分母的分布,但只有随机样本,则应计算随机变量的比率并检验其是否符合正态性。在您的情况下(稍作修改):

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),具有上面定义的斜线分布。我们可以在 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 是正态分布的,只是方差较大。QQ图清楚地表明情况并非如此。斜线分布的尾部比正态分布的预期要大得多。

于 2014-03-13T20:00:42.297 回答