作者kurtasd (阿炫)
站内Statistics
标题[程式] SAS疑似一次算太多次nlp而无法继续跑程式
时间Tue Mar 6 18:30:51 2012
------------------------------------------------------------------------
[软体程式类别]:
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