[程式] SAS NLP

看板Statistics作者 (阿炫)時間14年前 (2012/02/29 00:42), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
------------------------------------------------------------------------ [軟體程式類別]: sas [程式問題]: nlp的收斂問題 [軟體熟悉度]: 新手(不到1個月) [問題敘述]: 以下log檔和output LOG: ----------------------------------------------------------------------------------- NOTE: Your code contains 3 program statements. NOTE: Gradient is computed using analytic formulas. NOTE: Hessian is computed using analytic formulas. NOTE: Initial value of parameter ALPHA is set randomly to 0.4942477809. NOTE: Initial value of parameter DELTA is set randomly to 0.0148708765. NOTE: Initial value of parameter ETA is set randomly to 0.0086154253. NOTE: Initial value of parameter MU is set randomly to 0.2111245581. ERROR: NRRIDG Optimization cannot be completed. ERROR: NRRIDG needs more than 50 iterations or 125 function calls. NOTE: Some of the active constraints have significant Lagrange Multipliers. NOTE: There were 30 observations read from the data set WORK.EUR61. NOTE: The data set WORK.PIN61 has 30 observations and 3 variables. NOTE: PROCEDURE NLP used (Total process time): real time 0.04 seconds cpu time 0.03 seconds ----------------------------------------------------------------------------------- OUTPUT: ---------------------------------------------------------------------------------- ptimization Results Iterations 50 Function Calls 93 Hessian Calls 51 Active Constraints (+) 2 Objective Function 5400.2011171 Max Abs Gradient Element 3.7148684E12 Ridge 0 Actual Over Pred Change 0.0019521003 ERROR: NRRIDG needs more than 50 iterations or 125 function calls. ERROR: NRRIDG Optimization cannot be completed. 請問這樣子是無法收斂嗎? 第二種log和output檔 log --------------------------------------------------------------------------------------------- NOTE: Your code contains 3 program statements. NOTE: Gradient is computed using analytic formulas. NOTE: Hessian is computed using analytic formulas. NOTE: Initial value of parameter ALPHA is set randomly to 0.4942477809. NOTE: Initial value of parameter DELTA is set randomly to 0.0148708765. NOTE: Initial value of parameter ETA is set randomly to 0.0086154253. NOTE: Initial value of parameter MU is set randomly to 0.2111245581. WARNING: Your program statements cannot be executed completely. WARNING: Your program statements cannot be executed completely. WARNING: Your program statements cannot be executed completely. WARNING: Your program statements cannot be executed completely. WARNING: Your program statements cannot be executed completely. WARNING: Your program statements cannot be executed completely. WARNING: Your program statements cannot be executed completely. NOTE: FCONV convergence criterion satisfied. NOTE: At least one element of the (projected) gradient is greater than 1e-3. NOTE: Some of the active constraints have significant Lagrange Multipliers. WARNING: In a total of 17 calls an error occurred during execution of the program statements. NLP attempted to recover by using a shorter step size. NOTE: There were 30 observations read from the data set WORK.EUR70. NOTE: The data set WORK.PIN70 has 30 observations and 3 variables. NOTE: PROCEDURE NLP used (Total process time): real time 0.05 seconds cpu time 0.04 seconds ------------------------------------------------------------------------------------------ output ------------------------------------------------------------------------------------------ Optimization Results Iterations 11 Function Calls 37 Hessian Calls 12 Active Constraints (+) 1 Objective Function 7127.8723383 Max Abs Gradient Element 5.7567645E99 Ridge 0 Actual Over Pred Change 1 FCONV convergence criterion satisfied. NOTE: At least one element of the (projected) gradient is greater than 1e-3. log檔中出現了一堆警告,但最後還是顯示FCONV convergence criterion satisfied 這樣子正常嗎?是不是只要出現了FCONV convergence criterion satisfied,就可以了嗎? [程式範例]: data movall; infile 'c:\eurmov.txt'; input date mmddyy8.+1 time time8. +1 bid ask bidv askv dt price ret of num;run; proc nlp data=movall noprint out=pin (keep =num ALPHA ETA MU); by num; max loglik; decvar ALPHA, DELTA, ETA, MU; M = min(bidv,askv) + max(bidv,askv) / 2.0 ; x = eta / (mu + eta) ; bounds 0.0 < eta mu, 0.0 <= alpha delta <= 1.0 ; loglik = -2.0 * eta + M * log(x) + (bidv + askv) * log(mu + eta) + log( alpha * (1.0 - delta) * exp(-1.0 * mu) * (x ** (askv - M )) + alpha * delta * exp(-1.0 * mu) * (x ** (bidv - M)) + (1.0 - alpha) * (x ** (bidv + askv - M)) ) ; proc sort data = pin nodupkey; by num; data pin; set pin; PIN = alpha * mu / (alpha * mu + 2.0 * eta) ; label pin = 'Probability of informed trading' ; format pin 5.3 ; run; proc print data = pin; run; 另外如果沒有收斂out=pin資料表中還會顯示嗎? 若會顯示,沒有收斂的數字即沒有意義 有什麼辦法使沒有收斂的數值自動以"."表示嗎? ----------------------------------------------------------------------------- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 223.140.145.76

02/29 09:53, , 1F
檢查問題的convexity
02/29 09:53, 1F

03/02 23:30, , 2F
恩,我知道...
03/02 23:30, 2F

03/02 23:32, , 3F
目前問題只剩如果沒有收斂,那估計值可以不要output或是以
03/02 23:32, 3F

03/02 23:33, , 4F
漏缺值代替嗎?
03/02 23:33, 4F
文章代碼(AID): #1FJGG6cd (Statistics)