作者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