<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Proc IML and Call NLPNRR/NLPNRA for Maximum Likelihod in SAS/IML Software and Matrix Computations</title>
    <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Proc-IML-and-Call-NLPNRR-NLPNRA-for-Maximum-Likelihod/m-p/129382#M1007</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey SAS-community&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a problem with maximizing a likelihood function within proc iml using call nlpnra and nlpnrr. The data I am looking at is event/survival data where I am modeling defaults and at each event time will have to take into account observations in the risk set. This is what is specified in the function statement below. &lt;/P&gt;&lt;P&gt;The program outputs a value for the objective function(l), for the initial values of the beta-vector(betaT) but does however not try to change it for a better fit. I have tried running nlpnra and nlpnrr calls, but get two different warning/error messages. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below a sketch of the code I am using is included with a simple data example. The problem is however the same when I run it on my larger data set. Is impossible to get at least some rough estimates without specifying both the gradient and the hessian?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much for your help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 8pt; font-family: 'SAS Monospace';"&gt;-- ERRORS --&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 8pt;"&gt;NLPNRR&lt;BR /&gt; ERROR: ITEM \_pages_\_page_#5 does not exist.&lt;BR /&gt; NOTE: XCONV convergence criterion satisfied.&lt;BR /&gt; NOTE: At least one element of the (projected) gradient is greater than 1e-3.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 8pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 8pt;"&gt;NLPNRA&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 8pt;"&gt;ERROR: NEWRAP Optimization cannot be completed.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 8pt;"&gt;WARNING: Optimization routine cannot improve the function value.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 8pt; font-family: 'SAS Monospace';"&gt;-- CODE --&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;dm "cle out";&lt;/P&gt;&lt;P&gt;dm "cle log";&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc iml;&lt;/P&gt;&lt;P&gt;/* ---------------------------------------------------------------------------------------------------------------------*/&lt;/P&gt;&lt;P&gt;/* Simple example: 9 observations, 2 covaraites, 6 of the 9 firms defauklts */&lt;/P&gt;&lt;P&gt;x={1 1, 1 2, 1 3, 1 4, 1 5, 1 6, 1 7, 1 8, 1 9};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 9x2 vector - design matrix 2 covaraites where first i constant*/&lt;/P&gt;&lt;P&gt;d={0, 0.4, 3, 4, 6, 7};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 6x1 vector - default times of defaulting firms */&lt;/P&gt;&lt;P&gt;x_d={1 1, 1 3, 1 5, 1 6, 1 7, 1 8};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 6*2 vector - covariates of defaulting firms*/&lt;/P&gt;&lt;P&gt;time={0, 0.2, 0.4, 0.7, 3, 4, 6, 7, 8};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 9x1 vector - observation tim*/&lt;/P&gt;&lt;P&gt;default={1, 0, 1, 0, 1, 1, 1, 1, 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 9x1 vector - default at observation time*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* ---------------------------------------------------------------------------------------------------------------------*/&lt;/P&gt;&lt;P&gt;p = ncol(x);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Count the number of parameters to be included&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;n = nrow(x);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* count the number of observations */&lt;/P&gt;&lt;P&gt;dn = nrow(d);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* counts the number of distinct defaults */ &lt;/P&gt;&lt;P&gt;l=0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* initializes the loglikelihood OUTSIDE ALL LOOPS */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;S_0=j(1,1,0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* initiates S_0 - aalen p 149 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* -- can manually be changed ----- */ &lt;/P&gt;&lt;P&gt;betaT={0 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* initializes betaT row vectors */&lt;/P&gt;&lt;P&gt;/* ---------------------------------------------------------------------------------------------------------------------*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start f_loglike(betaT) global(n,dn,x,time,d,x_d,l);&lt;/P&gt;&lt;P&gt;beta=t(betaT);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* transposes the initalized vector - becomes a COLUMN vector */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* enters a loop from first default time to last default time - 6 loops in total */&lt;/P&gt;&lt;P&gt;&amp;nbsp; do j=1 to dn;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; S_0=0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* resets S back 0 for next default runthrough: j=1 to dj loop*/ &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dj = d&lt;J&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* stores jth default time into dj */&lt;/J&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dj_round = ceil(dj+0.000001);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* rounds up to nearest interger, where quarter ends */ &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* IDEA: create a vector that is equal 1 if observation belongs to risk set for the particular default */ &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* if it belongs to risk set then its end_global_frac time is between di and di_round */ &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dj_vector=j(n,1,dj);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*WITHIN Default-LOOP. Reinitilalizes each time loops runs through*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dj_round_vector=j(n,1,dj_round); /*WITHIN Default-LOOP. Reinitilalizes each time loops runs through*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1= dj_vector &amp;lt;= time;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Vector equalling one when observation when end_global_frac os greater then or equal to jth default time DIMENSIONS: nx1/*/ &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t2= time &amp;lt;= dj_round_vector;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Vector equalling one when observation when end_global_frac os less than or equal to jth default time DIMENSIONS: nx1/*/ &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y= t1#t2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Vector of 1s for firms at risk at the particular jth default time and otherwize zero DIMENSIONS: nx1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=1 to n;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* summing over all n - only positive values for firms at risk*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x_i=x[i,];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* taking out the covariates for the ith firms if at risk 0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; si=exp(x_i*beta);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* multiplies with beta vector and set in exponents */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; si2=y&lt;I&gt;#si;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* muliplies with ith element of t3 vector which is 1 if beloning to the risk set and zero otherwise */&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; S_0=S_0+si;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* sums over the risk set*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x_dj=x_d[j,];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* stores j th defaulting firms covariates at default time into row vector */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xjbeta=x_dj*beta;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* multiplies row vector with column vector to form jth firms contrubution */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iloglike =xjbeta-log(S_0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* iloglikelihood for jth default substracted S at time t_j default time */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; l = l + iloglike;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* adds each seperate log likelihood elements to the agg. likelihood to be maximized*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; return(l);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;finish f_loglike;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* ---------------------------------------------------------------------------------------------------------------------*/ &lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;/* &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://support.sas.com/documentation/cdl/en/imlug/59656/HTML/default/viewer.htm#nonlinearoptexpls_sect10.htm"&gt;http://support.sas.com/documentation/cdl/en/imlug/59656/HTML/default/viewer.htm#nonlinearoptexpls_sect10.htm&lt;/A&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;optn = {1 4}; &lt;/P&gt;&lt;P&gt;call nlpnra(xr,rc,"f_loglike",betaT,optn);&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 30 May 2012 16:44:15 GMT</pubDate>
    <dc:creator>thaisjensen</dc:creator>
    <dc:date>2012-05-30T16:44:15Z</dc:date>
    <item>
      <title>Proc IML and Call NLPNRR/NLPNRA for Maximum Likelihod</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Proc-IML-and-Call-NLPNRR-NLPNRA-for-Maximum-Likelihod/m-p/129382#M1007</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey SAS-community&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a problem with maximizing a likelihood function within proc iml using call nlpnra and nlpnrr. The data I am looking at is event/survival data where I am modeling defaults and at each event time will have to take into account observations in the risk set. This is what is specified in the function statement below. &lt;/P&gt;&lt;P&gt;The program outputs a value for the objective function(l), for the initial values of the beta-vector(betaT) but does however not try to change it for a better fit. I have tried running nlpnra and nlpnrr calls, but get two different warning/error messages. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below a sketch of the code I am using is included with a simple data example. The problem is however the same when I run it on my larger data set. Is impossible to get at least some rough estimates without specifying both the gradient and the hessian?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much for your help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 8pt; font-family: 'SAS Monospace';"&gt;-- ERRORS --&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 8pt;"&gt;NLPNRR&lt;BR /&gt; ERROR: ITEM \_pages_\_page_#5 does not exist.&lt;BR /&gt; NOTE: XCONV convergence criterion satisfied.&lt;BR /&gt; NOTE: At least one element of the (projected) gradient is greater than 1e-3.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="EN-US" style="font-size: 8pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 8pt;"&gt;NLPNRA&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 8pt;"&gt;ERROR: NEWRAP Optimization cannot be completed.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 8pt;"&gt;WARNING: Optimization routine cannot improve the function value.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN lang="EN-US" style="font-size: 8pt; font-family: 'SAS Monospace';"&gt;-- CODE --&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;dm "cle out";&lt;/P&gt;&lt;P&gt;dm "cle log";&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc iml;&lt;/P&gt;&lt;P&gt;/* ---------------------------------------------------------------------------------------------------------------------*/&lt;/P&gt;&lt;P&gt;/* Simple example: 9 observations, 2 covaraites, 6 of the 9 firms defauklts */&lt;/P&gt;&lt;P&gt;x={1 1, 1 2, 1 3, 1 4, 1 5, 1 6, 1 7, 1 8, 1 9};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 9x2 vector - design matrix 2 covaraites where first i constant*/&lt;/P&gt;&lt;P&gt;d={0, 0.4, 3, 4, 6, 7};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 6x1 vector - default times of defaulting firms */&lt;/P&gt;&lt;P&gt;x_d={1 1, 1 3, 1 5, 1 6, 1 7, 1 8};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 6*2 vector - covariates of defaulting firms*/&lt;/P&gt;&lt;P&gt;time={0, 0.2, 0.4, 0.7, 3, 4, 6, 7, 8};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 9x1 vector - observation tim*/&lt;/P&gt;&lt;P&gt;default={1, 0, 1, 0, 1, 1, 1, 1, 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* 9x1 vector - default at observation time*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* ---------------------------------------------------------------------------------------------------------------------*/&lt;/P&gt;&lt;P&gt;p = ncol(x);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Count the number of parameters to be included&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;n = nrow(x);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* count the number of observations */&lt;/P&gt;&lt;P&gt;dn = nrow(d);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* counts the number of distinct defaults */ &lt;/P&gt;&lt;P&gt;l=0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* initializes the loglikelihood OUTSIDE ALL LOOPS */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;S_0=j(1,1,0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* initiates S_0 - aalen p 149 */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* -- can manually be changed ----- */ &lt;/P&gt;&lt;P&gt;betaT={0 0};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* initializes betaT row vectors */&lt;/P&gt;&lt;P&gt;/* ---------------------------------------------------------------------------------------------------------------------*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start f_loglike(betaT) global(n,dn,x,time,d,x_d,l);&lt;/P&gt;&lt;P&gt;beta=t(betaT);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* transposes the initalized vector - becomes a COLUMN vector */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* enters a loop from first default time to last default time - 6 loops in total */&lt;/P&gt;&lt;P&gt;&amp;nbsp; do j=1 to dn;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; S_0=0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* resets S back 0 for next default runthrough: j=1 to dj loop*/ &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dj = d&lt;J&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* stores jth default time into dj */&lt;/J&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dj_round = ceil(dj+0.000001);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* rounds up to nearest interger, where quarter ends */ &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* IDEA: create a vector that is equal 1 if observation belongs to risk set for the particular default */ &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* if it belongs to risk set then its end_global_frac time is between di and di_round */ &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dj_vector=j(n,1,dj);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*WITHIN Default-LOOP. Reinitilalizes each time loops runs through*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dj_round_vector=j(n,1,dj_round); /*WITHIN Default-LOOP. Reinitilalizes each time loops runs through*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1= dj_vector &amp;lt;= time;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Vector equalling one when observation when end_global_frac os greater then or equal to jth default time DIMENSIONS: nx1/*/ &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t2= time &amp;lt;= dj_round_vector;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Vector equalling one when observation when end_global_frac os less than or equal to jth default time DIMENSIONS: nx1/*/ &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y= t1#t2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Vector of 1s for firms at risk at the particular jth default time and otherwize zero DIMENSIONS: nx1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=1 to n;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* summing over all n - only positive values for firms at risk*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x_i=x[i,];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* taking out the covariates for the ith firms if at risk 0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; si=exp(x_i*beta);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* multiplies with beta vector and set in exponents */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; si2=y&lt;I&gt;#si;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* muliplies with ith element of t3 vector which is 1 if beloning to the risk set and zero otherwise */&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; S_0=S_0+si;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* sums over the risk set*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x_dj=x_d[j,];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* stores j th defaulting firms covariates at default time into row vector */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xjbeta=x_dj*beta;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* multiplies row vector with column vector to form jth firms contrubution */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iloglike =xjbeta-log(S_0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* iloglikelihood for jth default substracted S at time t_j default time */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; l = l + iloglike;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* adds each seperate log likelihood elements to the agg. likelihood to be maximized*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; return(l);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;finish f_loglike;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* ---------------------------------------------------------------------------------------------------------------------*/ &lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;/* &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://support.sas.com/documentation/cdl/en/imlug/59656/HTML/default/viewer.htm#nonlinearoptexpls_sect10.htm"&gt;http://support.sas.com/documentation/cdl/en/imlug/59656/HTML/default/viewer.htm#nonlinearoptexpls_sect10.htm&lt;/A&gt;&lt;SPAN&gt; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;optn = {1 4}; &lt;/P&gt;&lt;P&gt;call nlpnra(xr,rc,"f_loglike",betaT,optn);&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 30 May 2012 16:44:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Proc-IML-and-Call-NLPNRR-NLPNRA-for-Maximum-Likelihod/m-p/129382#M1007</guid>
      <dc:creator>thaisjensen</dc:creator>
      <dc:date>2012-05-30T16:44:15Z</dc:date>
    </item>
    <item>
      <title>Re: Proc IML and Call NLPNRR/NLPNRA for Maximum Likelihod</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Proc-IML-and-Call-NLPNRR-NLPNRA-for-Maximum-Likelihod/m-p/129383#M1008</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;To optimize a function, it must have a local maximum. Your function is unbounded.&lt;IMG alt="LL.bmp" class="jive-image-thumbnail jive-image" src="https://communities.sas.com/legacyfs/online/2110_LL.bmp" width="450" /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 30 May 2012 18:28:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Proc-IML-and-Call-NLPNRR-NLPNRA-for-Maximum-Likelihod/m-p/129383#M1008</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2012-05-30T18:28:36Z</dc:date>
    </item>
    <item>
      <title>Re: Proc IML and Call NLPNRR/NLPNRA for Maximum Likelihod</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Proc-IML-and-Call-NLPNRR-NLPNRA-for-Maximum-Likelihod/m-p/129384#M1009</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Rick for the swift reply. I see why that will cause the optimizer to not work. I'll work at getting the right likelihood specified. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 May 2012 10:43:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Proc-IML-and-Call-NLPNRR-NLPNRA-for-Maximum-Likelihod/m-p/129384#M1009</guid>
      <dc:creator>thaisjensen</dc:creator>
      <dc:date>2012-05-31T10:43:11Z</dc:date>
    </item>
  </channel>
</rss>

