首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仿真RStudio

仿真RStudio
EN

Stack Overflow用户
提问于 2020-07-20 15:11:35
回答 1查看 251关注 0票数 2

我用R中的包fGarch来模拟一个偏正态分布。我的统计数字如下:

平均数= 155

Sd = 35

中位数= 150

我使用了公式:(3*(平均值-中值)/sd)来计算偏度,得出的偏差为0.427857,我使用了以下代码:

代码语言:javascript
复制
x <- rsnorm(10000,mean = 155,sd=35,xi=0.427857)
plot(density(x))

然而,尽管我的偏度参数是正的,但是显示的图是负的。我运行了几次代码以确保它不是一次性的。我似乎找不到这个错误(因为我预计它会有明显的偏差)。请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-25 00:27:30

偏斜有很多定义,比如使用皮尔逊第二偏度的定义。偏度XifGarch中是基于一篇论文(Fernandez & scale 2000),它是一个正方向和负方向上的逆标度因子。

如下图所示,倒转倾斜度Xi在零度附近产生镜像。当Xi =1时,分布是对称的。当0< Xi <1时,负偏斜。当Xi >1时,正偏。

在您的示例中,平均值向中间值的右侧倾斜。所以我们正在寻找一个正的斜率(Xi > 1)。经过反复试验,Xi可能定位在1.094095左右。分位数函数qsnorm(0.5, Mean, Sd, xi=1.094095)给出的中值确实是150。

然而,模拟的中值有一点偏倚,这导致了皮尔逊的第二次偏斜。

代码语言:javascript
复制
Mean <- 155
Sd <- 35
Median <- 150
3 * (Mean - Median) / Sd #Pearson's second skewness
#0.4285714

library(fGarch)
set.seed(1)
x <- rsnorm(100000, Mean, Sd, xi=1.094095)

mean(x)
#154.9353
sd(x)
#35.07564
median(x) #a bit higher than expected
#153.9029
3 * (mean(x) - median(x)) / sd(x) #biased from expected
#0.08830281

最后,采用通用优化Xi方法对optim进行定位.

代码语言:javascript
复制
fn <- function(log_Xi, Mean, Sd, Median) {
  abs(qsnorm(0.5, Mean, Sd, exp(log_Xi)) - Median)
  }

tem <- optim(0, fn, gr=NULL, Mean, Sd, Median)
Xi <- exp(tem$par)
#1.094095

上面的密度图的代码。

代码语言:javascript
复制
x_ <- seq(-5,5, by=0.01)
plot(x_, dsnorm(x_, xi=3), type='l', ylab='density', col='red', xlab='x', main='Skewness')
lines(x_, dsnorm(x_, xi=1), col='black', lty=2)
lines(x_, dsnorm(x_, xi=1/3), col='blue')
legend('topright', legend=c('3','1','1/3'), fill=c('red','black','blue'), title='Xi')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62998486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档