R 尝试比较两种分布

R 尝试比较两种分布,r,statistics,finance,R,Statistics,Finance,我在互联网上找到了这段代码,它将正态分布与不同的学生分布进行了比较: x <- seq(-4, 4, length=100) hx <- dnorm(x) degf <- c(1, 3, 8, 30) colors <- c("red", "blue", "darkgreen", "gold", "black") labels <- c("df=1", "df=3", "df=8", "df=30", "normal") plot(x, hx, type="l"

我在互联网上找到了这段代码,它将正态分布与不同的学生分布进行了比较:

x <- seq(-4, 4, length=100)
hx <- dnorm(x)

degf <- c(1, 3, 8, 30)
colors <- c("red", "blue", "darkgreen", "gold", "black")
labels <- c("df=1", "df=3", "df=8", "df=30", "normal")

plot(x, hx, type="l", lty=2, xlab="x value",
  ylab="Density", main="Comparison of t Distributions")

for (i in 1:4){
  lines(x, dt(x,degf[i]), lwd=2, col=colors[i])
}

x查看或测试数据是否为正态分布。

如果您只关心数据是否为正态分布,则可以应用Jarque-Bera测试。此测试表明,在null下,您的数据是正态分布的,请参阅详细信息。您可以使用
jarque.bera.test
函数执行此测试

 library(tseries)
 jarque.bera.test(ss)

    Jarque Bera Test

data:  ss 
X-squared = 4100.781, df = 2, p-value < 2.2e-16
从最后两行可以看出,
ss
具有过多的峰度,并且偏度不是零。这是Jarque Bera测试的基础

但是如果你想将数据的实际分布与一个正态分布的随机变量进行比较,这个随机变量与你的数据具有相同的均值和方差,你可以先用一个核从你的数据中估计经验密度函数,然后绘制它,最后,您只需生成一个与数据具有相同均值和方差的正态随机变量,执行如下操作:

 plot(density(ss, kernel='epanechnikov'))
 set.seed(125)
 lines(density(rnorm(length(ss), mean(ss), sd(ss)), kernel='epanechnikov'), col=2)

通过这种方式,您可以从另一个概率分布生成另一条曲线


如果您感兴趣的是了解数据的可能分布,那么@Alex Reynolds建议的测试将对您有所帮助。如果这是你的目标,你可以在任何一本统计教科书中看看它的任何优点测试。不过,如果只是想知道变量是否为正态分布,那么Jarque Bera测试就足够了。

谢谢你的评论,但我实际上已经做了QQ绘图和kolomogorov测试,但无论如何都在尝试完成此图。我的qqplot上有一个颠倒的S。。。这是否意味着峰度远高于正态模型?正态分布的(过剩)峰度为零。因此,任何偏离这一点的情况都会使你偏离正态分布。QQ很适合探索,但也许可以使用KS和Shapiro-Wilk来获得一个数值p值,表示您的分布与正态分布的距离。在fBasics软件包中,您可以找到8或9个正态性测试。我知道我的数据不正常,我已经测试过了。我想做的是用图表来说明它。而且我还可以潜在地直观地看到我的数据来自QQ图的分布,如果分布正常,一眼就能看到,这样就行了。至于您的数据来自哪个分布,您可以使用Eureqa进行探索:Kolgomorov-Smirnov测试(在R中)是测试正态性的另一个好选择。非常感谢!这正是我想要的!我现在会玩一玩,以便更熟悉这一切。还有一件事,我怎么能在你发布的图表上叠加一个学生分布,例如dl=3?出于某种原因,这不起作用:线(密度(rt(长度(ss),3,平均值(ss)),kernel='epanechnikov'),col=2)@jeremy.staub-FWIW,世界上有相当多的人认为,测试一个分布是否偏离正态分布是完全无用的,甚至在很大程度上是无用的。请记住,没有确定的方法来确认你的数据是正态分布的,除非你能从分析上证明它。这就像证明所有的天鹅都是白天鹅的假设,即使你看到一百万只白天鹅,也只需要一只黑天鹅就可以推翻这个假设。这就是为什么所有的统计检验都是为了反驳无效假设,而不是证明它,但另一方面,忽视你已经看到了一百万只白天鹅,因为可能存在一只黑天鹅的事实,是荒谬的保守。
 library(fBasics)
 basicStats(ss)
                     ss
nobs        3776.000000
NAs            0.000000
Minimum       -0.105195
Maximum        0.187713
1. Quartile   -0.009417
3. Quartile    0.010220
Mean           0.000462
Median         0.001224
Sum            1.745798
SE Mean        0.000336
LCL Mean      -0.000197
UCL Mean       0.001122
Variance       0.000427
Stdev          0.020671
Skewness       0.322820
Kurtosis       5.060026
 plot(density(ss, kernel='epanechnikov'))
 set.seed(125)
 lines(density(rnorm(length(ss), mean(ss), sd(ss)), kernel='epanechnikov'), col=2)