作者kurtasd (阿炫)
站内Statistics
标题[程式] SAS NLP
时间Wed Feb 29 00:42:44 2012
------------------------------------------------------------------------
[软体程式类别]:
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
1F:→ LiamIssac:检查问题的convexity 02/29 09:53
2F:→ kurtasd:恩,我知道... 03/02 23:30
3F:→ kurtasd:目前问题只剩如果没有收敛,那估计值可以不要output或是以 03/02 23:32
4F:→ kurtasd:漏缺值代替吗? 03/02 23:33