gpt4 book ai didi

r - 尝试比较两个分布

转载 作者:行者123 更新时间:2023-12-04 11:03:15 27 4
gpt4 key购买 nike

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

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])
}

我想根据我想将我的数据与正态分布进行比较的情况进行调整。这是我的数据:
library(quantmod)
getSymbols("^NDX",src="yahoo", from='1997-6-01', to='2012-6-01')
daily<- allReturns(NDX) [,c('daily')]
dailySerieTemporel<-ts(data=daily)
ss<-na.omit(dailySerieTemporel)

目标是查看我的数据是否正常......有人可以帮我解决这个问题吗?非常感谢我真的很感激!

最佳答案

如果您只关心知道您的数据是否是正态分布的,您可以应用 Jarque-Bera 检验。此测试表明在 null 下您的数据是正态分布的,请参阅详细信息 here .您可以使用 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

很明显,从结果中,您可以看到您的数据不是正态分布的,因为即使在 1% 时也拒绝了 null。

要了解为什么您的数据不是正态分布的,您可以查看描述性统计数据:
 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

从最后两行可以看出 ss峰度过大,偏度不为零。这是 Jarque-Bera 测试的基础。

但是,如果您有兴趣将数据的实际分布与具有与数据相同的均值和方差的正态分布随机变量进行比较,您可以首先使用内核估计数据的经验密度函数,然后绘制它,最后您只需要必须生成一个与数据具有相同均值和方差的正态随机变量,请执行以下操作:
 plot(density(ss, kernel='epanechnikov'))
set.seed(125)
lines(density(rnorm(length(ss), mean(ss), sd(ss)), kernel='epanechnikov'), col=2)

enter image description here

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

如果您有兴趣了解您的数据来自哪种可能的分布,@Alex Reynolds 建议的测试将对您有所帮助。如果这是您的目标,您可以查看任何统计教科书中的任何优点测试。尽管如此,如果只想知道您的变量是否呈正态分布,那么 Jarque-Bera 测试就足够了。

关于r - 尝试比较两个分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11820591/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com