楼主: redaring
8758 21

[程序分享] 请教gamma分布的问题 [推广有奖]

11
crackman 发表于 2010-5-20 19:12:25
楼主是一个知名大学的博士
很牛叉的

12
suzhzh 发表于 2010-5-20 23:19:54
是得好好学习了,这个嘛是有点难度,不过我是对我来说的

13
redaring 发表于 2010-5-21 02:59:40
版主不要挖苦本人哈!

快点指教我一下……非常苦恼ing

14
jingju11 发表于 2010-5-21 03:45:07
13# redaring
对于xiaosanmao 的程序,我不是很理解。有理论根据吗?
proc UNIVARIATE 的确可是给出gamma拟合的曲线。另外proc lifereg 也可以fit gamma 分布。我也不是很理解楼主的题意。另外如何转化gamma的scale呢?

15
redaring 发表于 2010-5-21 10:01:09
呃,这么说可能有点不准确,不过我就是想要求类似95百分位上的值,不过是先将数拟合gamma分布,然后再求

16
hongxx 发表于 2010-5-21 12:21:08
*//生产gamma分布随机数,并拟合//;
data gamma;
  seed=1245;
  alpha=1.5;
  beta=2;
  do i=1 to 1000;
   call rangam(seed,alpha,gamma);
   gamma=gamma*beta;
   output;
  end;
run;
proc univariate data=gamma;
  var gamma;
  histogram gamma/gamma (percent=1 5 10  25 50 75 90 95 99);
  output out=fitted  pctlpre=P_ pctlpts=1,5,10,25, 50,95,99;
run;
*//指定percent获得观测值的百分位数 和拟合gamma分布对应的百分位数//;

结果百分位数相当接近。
问题是我找不到把拟合的参数alpha beta输出到数据集中去,或者把拟合percent输出到数据集中去。
哪位来解决吧。

17
hongxx 发表于 2010-5-21 12:25:02
A 服从形状参数alpha,尺度参数beta=1 的分布则,
B=A*5, 服从alpha,beta=5的分布。
广义gamma分布的话还有个k参数,上wikipedia查。

18
redaring 发表于 2010-5-21 13:16:57
16# hongxx

非常感谢!
好像有点看到曙光了。但是请不要怪我笨,我不太知道这个程序怎么应用到我的数据中去,还望大侠指点一下。

19
hongxx 发表于 2010-5-21 13:33:36
所以我之前建议你分组,到时proc univariate 里by  (分组变量)就行了。
proc univariate data=你的数据集;
  var (变量列表);
histogram 变量列表;
by (分组变量);
run;
既然你说你只对满足一定条件的数据做同一组的gamma拟合,那显然分组是必要的。
我很好奇怎么会有360000组,是你有360000个观测吧?
你不是想把 var1 var3 var4 取值相同的做为同一组,然后对var5拟合gamma分布吗?
还没找到如何把拟合的数据、参数输出到数据集里,这样就好多了。

20
redaring 发表于 2010-5-21 18:24:21
19# hongxx

/*gamma*/
proc univariate data=test.t;
  var max;
  by usaf mo da;
  histogram max/gamma (percent=1 5 10  25 50 75 90 95 99);
   output out=gamma_max  pctlpre=P_ pctlpts=1,5,10,25, 50,95,99;
run;

/*weibull*/
proc univariate data=test.t;
  var max;
  by usaf mo da;
  histogram max/weibull (percent=1 5 10  25 50 75 90 95 99);
   output out=weibull_max  pctlpre=P_ pctlpts=1,5,10,25, 50,95,99;
run;

根据你说,我各做了一个gamma和weibull的,结果发现95%和5%上的值和直接求的百分位的值都是一样的,我不太明白为什么会这样?

因为var1有1000个,相同的var1又有360个不同的var2和var3的组合,这么一来,不就是360*1000组么

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 11:50