作者pael (就是喜欢)
看板NCTU-STAT96G
标题Re: [心得] imsl chi-squar检定
时间Tue Aug 7 21:47:30 2007
※ 引述《seablack (Water)》之铭言:
不好意思,恕删,感谢老师的 Demo。
: //自己写了一EXP(1)的产生器
: float GEXP1(int seed)
: {
: float Y, u;
: u = (rand()%seed/(1.0*seed));
: //以下二个 if 是为了 void 丢进log会有问题
: if(u <1.0E-5) u = 1.0E-5;
: if(u >0.99999) u = 0.99999;
: Y = -1.0*log(u);
^^^^^^^^^^^
敢问这边是不是应该改成 -1.0*log(1-u)
因为我自己拿 exp(1) 的 CDF 算 log 里是 1-u @@
: return(Y);
: }
另外我想请问一下,如果模拟的参数是由 scanf 进来的(如 exp(3) 之类的)
而不是在 global 就可宣告的 variable
那这样在使用 IMSL 算 p-value 时该怎麽给 CDF 函数参数呢?
概念类似:
p_value = imsls_f_chi_squared_test(exp_CDF(?), iSize, 10, y, 0);
float exp_CDF(float Z, float mu)
{
float A = 1.0-exp(-Z/mu);
return(A);
}
只是如果直接传参数的话会有问题,试了很久,想请教大家!谢谢。 >__<
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.129.20
1F:推 fr407041:如果u是uniform 1-u也会是uniform 所以log里面放1-u ok的 08/07 22:02
2F:→ fr407041:但是如果要反过来利用指数值求cdf时 就一定要用1-u 08/07 22:03
3F:→ fr407041:但是老师这个只是产生模拟值 所以妹这问题 用u放log就好 08/07 22:04
4F:→ fr407041:当然用1-u更符合正确形式 不知道我这呆头有没有说错 08/07 22:05
5F:→ fr407041:错的话 原谅我 T_T 08/07 22:07
6F:推 seablack:GOOD 100% right 08/09 02:08