------------------------------------------------------------------------
[軟體程式類別]:
SAS
[程式問題]:
nlp跑很多次,大概10000次以上就無法繼續,不過到底幾次不行,則沒有一定
[軟體熟悉度]:
低(1~3個月)
[問題敘述]:
72筆資料跑一個maxlikelihood,大概要跑九萬多次,除卻無法收斂的問題,我還把
log和out檔輸出,而且我把result視窗也關掉了(在偏好設定裡的result全部取消勾勾),
且我用9.0,9.2,9.3也下去跑了,我的筆電是2.4雙核,6G記憶體,絕對夠用阿!
好奇怪,以下我po我覺得可能有問題的log檔,請大家協助我......身邊沒有人可以解決
我的問題,拜託大家!!!!BTW如果我只跑10000次以內的話,就可以完成他= =好奇怪
1. 這是我覺得有問題的nlp的log
NOTE: Your code contains 3 program statements.
NOTE: Gradient is computed using analytic formulas.
NOTE: Hessian is computed using analytic formulas.
WARNING: No output destinations active.
NOTE: Initial value of parameter ALPHA is set randomly to 0.5391736806.
NOTE: Initial value of parameter DELTA is set randomly to 0.3148269641.
NOTE: Initial value of parameter ETA is set randomly to 0.0348223769.
NOTE: Initial value of parameter MU is set randomly to 0.6781410708.
ERROR: Execution Errors for _OBS_= 1 :
ERROR: There are references to missing variables when the program code is
executed for _OBS_= 1
WARNING: Your program statements cannot be executed completely.
WARNING: In a total of 1 calls an error occurred during execution of the
program statements. NLP
attempted to recover by using a shorter step size.
NOTE: The above message was for the following by-group:
lastdt=1546763399
NOTE: There were 72 observations read from the data set WORK.NULL.
NOTE: The data set WORK.PIN1136 has 0 observations and 4 variables.
NOTE: PROCEDURE NLP used (Total process time):
real time 0.07 seconds
cpu time 0.03 seconds
2.這是算到nlp無法再繼續時的那一行,此時已經跑了一萬多次的nlp
NOTE: Your code contains 3 program statements.
NOTE: Gradient is computed using analytic formulas.
NOTE: Hessian is computed using analytic formulas.
WARNING: No output destinations active.
NOTE: Initial value of parameter ALPHA is set randomly to 0.5802082902.
NOTE: Initial value of parameter DELTA is set randomly to 0.2293911456.
NOTE: Initial value of parameter ETA is set randomly to 0.1702876772.
NOTE: Initial value of parameter MU is set randomly to 0.5281594463.
WARNING: Your program statements cannot be executed completely.
ERROR: Signal caught by CMP from PROC.
ERROR: Floating Point Overflow.
ERROR: Termination due to Floating Point Exception
NOTE: The SAS System stopped processing this step because of errors.
NOTE: There were 72 observations read from the data set WORK.NULL.
WARNING: The data set WORK.PIN11160 may be incomplete. When this step was
stopped there were 0
observations and 4 variables.
NOTE: PROCEDURE NLP used (Total process time):
real time 0.04 seconds
cpu time 0.03 seconds
[程式範例]:
%macro mov(obs,winlong);/*enter this data _n_ and howmany deal to a pin*/
%let k=&obs-&winlong+1;/*how many window*/
%let label=tail/100;
%do i=1 %to &k;
data null;
set eur;
if _n_>&i+&winlong-1 then delete;
if _n_<&i then delete;
num=&i+&winlong-1;
data temp;
set null(rename=(dt=lastdt));
by num;
if last.num then output;
data null;
merge null temp;
by num;
proc nlp data=null noprint out=pin&i. (keep =lastdt ALPHA ETA MU);
by lastdt;
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)) ) ;run;
data pin&i;
set pin&i;
by lastdt;
if last.lastdt;
%end;
data pinall;
set
%do i=1 %to &k;
pin&i
%end;
;by lastdt;
%mend;
-----------------------------------------------------------------------------
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.160.90