jer*_*aub 5 statistics finance r
我在互联网上找到了这个代码,它将正态分布与不同的学生分布进行比较:
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])
}
Run Code Online (Sandbox Code Playgroud)
我想适应我的情况,我希望将我的数据与正态分布进行比较.这是我的数据:
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)
Run Code Online (Sandbox Code Playgroud)
目标是看我的数据是否正常......有人可以帮我解决这个问题吗?非常感谢,我真的很感激!
如果您只关心自己的数据是否正常分布,可以应用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
Run Code Online (Sandbox Code Playgroud)
显然,从结果中,您可以看到您的数据不是正态分布的,因为即使在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
Run Code Online (Sandbox Code Playgroud)
从最后两行,可以看出ss具有过多的峰度,并且偏度不为零.这是Jarque-Bera测试的基础.
但是,如果您有兴趣比较数据的实际分布,使用与数据相同的均值和方差的正态分布随机变量,您可以先使用内核从数据中估算经验密度函数,然后绘制它,最后只有必须生成一个与数据具有相同均值和方差的正态随机变量,执行以下操作:
plot(density(ss, kernel='epanechnikov'))
set.seed(125)
lines(density(rnorm(length(ss), mean(ss), sd(ss)), kernel='epanechnikov'), col=2)
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以从另一个概率分布生成其他曲线.
@Alex Reynolds建议的测试将帮助您,如果您的兴趣是了解您的数据的可能分布.如果这是您的目标,您可以查看任何统计资料中的任何优度测试.然而,如果只是想知道你的变量是否正常分布,那么Jarque-Bera测试就足够了.
| 归档时间: |
|
| 查看次数: |
3367 次 |
| 最近记录: |