<?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 Error: (execution)Matrix has not been set to a value in SAS/IML Software and Matrix Computations</title>
    <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Error-execution-Matrix-has-not-been-set-to-a-value/m-p/582060#M4780</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I was trying to do gradient descent&amp;nbsp; in SAS. Below is my Code. I got "Matrix has not been set to a value" error and it said the Matrix Jtheta_new has not been set to a value. I searched a lot but still can't fix it. Any idea? Thank you.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;options fullstimer;&lt;/SPAN&gt;&lt;SPAN&gt;proc&lt;/SPAN&gt;&lt;SPAN&gt; iml;
    reset deflib&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;sashelp;
    &lt;/SPAN&gt;&lt;SPAN&gt;use&lt;/SPAN&gt;&lt;SPAN&gt; class;
    &lt;/SPAN&gt;&lt;SPAN&gt;read&lt;/SPAN&gt; &lt;SPAN&gt;all&lt;/SPAN&gt; &lt;SPAN&gt;var&lt;/SPAN&gt; {weight height} &lt;SPAN&gt;into&lt;/SPAN&gt;&lt;SPAN&gt; me;
    m &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; nrow(me);

    &lt;/SPAN&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;SPAN&gt;scaling feature;
    s1 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;max&lt;/SPAN&gt;(me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,1&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;)&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;min&lt;/SPAN&gt;(me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,1&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;);
    s2 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;max&lt;/SPAN&gt;(me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,2&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;)&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;min&lt;/SPAN&gt;(me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,2&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;);
    mean_s1 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; mean(me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,1&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;);
    mean_s2 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; mean(me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,2&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;);
    me&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,1&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; (me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,1&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;mean_s1)&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;s1;
    me&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,2&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; (me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,2&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;mean_s2)&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;s2;
    &lt;/SPAN&gt;&lt;SPAN&gt;*scaling feature;
  &lt;/SPAN&gt;&lt;SPAN&gt;    theta_0 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;;
    theta_1 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;;
    x0 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;;
    ov &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;10&lt;/SPAN&gt;&lt;SPAN&gt;;
    alpha &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0.03&lt;/SPAN&gt;&lt;SPAN&gt;;
    &lt;/SPAN&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;SPAN&gt;print&lt;/SPAN&gt;&lt;SPAN&gt; me;
    rec &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;BR /&gt;　　
    do &lt;/SPAN&gt;&lt;SPAN&gt;while&lt;/SPAN&gt; (ov&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;0.000000001&lt;/SPAN&gt;&lt;SPAN&gt;);
 
    theta_0Old &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; theta_0;
    theta_1Old &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; theta_1;
    &lt;/SPAN&gt;&lt;SPAN&gt;*compute old residual and collect data to plot r*&lt;/SPAN&gt;&lt;SPAN&gt;numOfIteration;
    rec &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; rec &lt;SPAN&gt;+&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;;
    r2 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;;
    do i&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;to&lt;/SPAN&gt;&lt;SPAN&gt; m;
            residual_tt &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;(theta_0Old&lt;SPAN&gt;*&lt;/SPAN&gt;x0 &lt;SPAN&gt;+&lt;/SPAN&gt; theta_1Old&lt;SPAN&gt;*&lt;/SPAN&gt;me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;i,2&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;) &lt;SPAN&gt;-&lt;/SPAN&gt; me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;i,1&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;;
            r2 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; r2&lt;SPAN&gt;+&lt;/SPAN&gt;residual_tt&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;SPAN&gt;residual_tt;
    &lt;/SPAN&gt;&lt;SPAN&gt;end&lt;/SPAN&gt;&lt;SPAN&gt;;
    Jtheta &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; r2&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;2&lt;/SPAN&gt;&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;m;
    xy &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; xy&lt;SPAN&gt;//&lt;/SPAN&gt;(rec&lt;SPAN&gt;||&lt;/SPAN&gt;&lt;SPAN&gt;Jtheta);
    &lt;/SPAN&gt;&lt;SPAN&gt;*compute old residual and collect data to plot r*&lt;/SPAN&gt;&lt;SPAN&gt;numOfIteration;

        res &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;; res_1 &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;;
        do i&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;to&lt;/SPAN&gt;&lt;SPAN&gt; m;
            residual_0 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;(theta_0Old&lt;SPAN&gt;*&lt;/SPAN&gt;x0 &lt;SPAN&gt;+&lt;/SPAN&gt; theta_1Old&lt;SPAN&gt;*&lt;/SPAN&gt;me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;i,2&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;) &lt;SPAN&gt;-&lt;/SPAN&gt; me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;i,1&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;;
            res &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; res &lt;SPAN&gt;+&lt;/SPAN&gt; (residual_0&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;SPAN&gt;x0);
            res_1 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; res_1 &lt;SPAN&gt;+&lt;/SPAN&gt; (residual_0&lt;SPAN&gt;*&lt;/SPAN&gt;me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;i,2&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;);
        &lt;/SPAN&gt;&lt;SPAN&gt;end&lt;/SPAN&gt;&lt;SPAN&gt;;
        &lt;/SPAN&gt;&lt;SPAN&gt;        theta_0 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; theta_0Old &lt;SPAN&gt;-&lt;/SPAN&gt; alpha&lt;SPAN&gt;*&lt;/SPAN&gt;res&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;m;
        theta_1 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; theta_1Old &lt;SPAN&gt;-&lt;/SPAN&gt; alpha&lt;SPAN&gt;*&lt;/SPAN&gt;res_1&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;m;

    &lt;/SPAN&gt;&lt;SPAN&gt;*update residual and decide whether it'&lt;/SPAN&gt;&lt;SPAN&gt;s convergence;
        r2 = 0;
        do i=1 to m;
            residual_tt =(theta_0*x0 + theta_1*me[i,2]) - me[i,1];
            r2 = r2+residual_tt*residual_tt;
        end;
        Jtheta_new = r2/2/m;
        ov = abs(Jtheta_new - Jtheta);
    *update residual and decide whether it&lt;/SPAN&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;s convergence;    
    &lt;/SPAN&gt;&lt;SPAN&gt;end&lt;/SPAN&gt;&lt;SPAN&gt;;
    &lt;/SPAN&gt;&lt;SPAN&gt;print&lt;/SPAN&gt;&lt;SPAN&gt; ov;
    call pgraf(xy,&lt;/SPAN&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;,&lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;x&lt;/SPAN&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;,&lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;y&lt;/SPAN&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;,&lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;mmmmm&lt;/SPAN&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;);

    theta_0_last &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; theta_0&lt;SPAN&gt;*&lt;/SPAN&gt;s1&lt;SPAN&gt;+&lt;/SPAN&gt;mean_s1&lt;SPAN&gt;-&lt;/SPAN&gt;mean_s2&lt;SPAN&gt;*&lt;/SPAN&gt;s1&lt;SPAN&gt;*&lt;/SPAN&gt;theta_1&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;s2;
    theta_1_last &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; theta_1&lt;SPAN&gt;*&lt;/SPAN&gt;s1&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;s2;
    &lt;/SPAN&gt;&lt;SPAN&gt;print&lt;/SPAN&gt;&lt;SPAN&gt; theta_0_last theta_1_last;
    run;
quit;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 19 Aug 2019 07:37:50 GMT</pubDate>
    <dc:creator>twopunchman</dc:creator>
    <dc:date>2019-08-19T07:37:50Z</dc:date>
    <item>
      <title>Error: (execution)Matrix has not been set to a value</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Error-execution-Matrix-has-not-been-set-to-a-value/m-p/582060#M4780</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I was trying to do gradient descent&amp;nbsp; in SAS. Below is my Code. I got "Matrix has not been set to a value" error and it said the Matrix Jtheta_new has not been set to a value. I searched a lot but still can't fix it. Any idea? Thank you.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN&gt;options fullstimer;&lt;/SPAN&gt;&lt;SPAN&gt;proc&lt;/SPAN&gt;&lt;SPAN&gt; iml;
    reset deflib&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;sashelp;
    &lt;/SPAN&gt;&lt;SPAN&gt;use&lt;/SPAN&gt;&lt;SPAN&gt; class;
    &lt;/SPAN&gt;&lt;SPAN&gt;read&lt;/SPAN&gt; &lt;SPAN&gt;all&lt;/SPAN&gt; &lt;SPAN&gt;var&lt;/SPAN&gt; {weight height} &lt;SPAN&gt;into&lt;/SPAN&gt;&lt;SPAN&gt; me;
    m &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; nrow(me);

    &lt;/SPAN&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;SPAN&gt;scaling feature;
    s1 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;max&lt;/SPAN&gt;(me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,1&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;)&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;min&lt;/SPAN&gt;(me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,1&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;);
    s2 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;max&lt;/SPAN&gt;(me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,2&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;)&lt;SPAN&gt;-&lt;/SPAN&gt;&lt;SPAN&gt;min&lt;/SPAN&gt;(me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,2&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;);
    mean_s1 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; mean(me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,1&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;);
    mean_s2 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; mean(me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,2&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;);
    me&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,1&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; (me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,1&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;mean_s1)&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;s1;
    me&lt;/SPAN&gt;&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,2&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt; &lt;SPAN&gt;=&lt;/SPAN&gt; (me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;,2&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;-&lt;/SPAN&gt;mean_s2)&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;s2;
    &lt;/SPAN&gt;&lt;SPAN&gt;*scaling feature;
  &lt;/SPAN&gt;&lt;SPAN&gt;    theta_0 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;;
    theta_1 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;;
    x0 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;;
    ov &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;10&lt;/SPAN&gt;&lt;SPAN&gt;;
    alpha &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0.03&lt;/SPAN&gt;&lt;SPAN&gt;;
    &lt;/SPAN&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;SPAN&gt;print&lt;/SPAN&gt;&lt;SPAN&gt; me;
    rec &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;BR /&gt;　　
    do &lt;/SPAN&gt;&lt;SPAN&gt;while&lt;/SPAN&gt; (ov&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;0.000000001&lt;/SPAN&gt;&lt;SPAN&gt;);
 
    theta_0Old &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; theta_0;
    theta_1Old &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; theta_1;
    &lt;/SPAN&gt;&lt;SPAN&gt;*compute old residual and collect data to plot r*&lt;/SPAN&gt;&lt;SPAN&gt;numOfIteration;
    rec &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; rec &lt;SPAN&gt;+&lt;/SPAN&gt; &lt;SPAN&gt;1&lt;/SPAN&gt;&lt;SPAN&gt;;
    r2 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;;
    do i&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;to&lt;/SPAN&gt;&lt;SPAN&gt; m;
            residual_tt &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;(theta_0Old&lt;SPAN&gt;*&lt;/SPAN&gt;x0 &lt;SPAN&gt;+&lt;/SPAN&gt; theta_1Old&lt;SPAN&gt;*&lt;/SPAN&gt;me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;i,2&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;) &lt;SPAN&gt;-&lt;/SPAN&gt; me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;i,1&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;;
            r2 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; r2&lt;SPAN&gt;+&lt;/SPAN&gt;residual_tt&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;SPAN&gt;residual_tt;
    &lt;/SPAN&gt;&lt;SPAN&gt;end&lt;/SPAN&gt;&lt;SPAN&gt;;
    Jtheta &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; r2&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;2&lt;/SPAN&gt;&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;m;
    xy &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; xy&lt;SPAN&gt;//&lt;/SPAN&gt;(rec&lt;SPAN&gt;||&lt;/SPAN&gt;&lt;SPAN&gt;Jtheta);
    &lt;/SPAN&gt;&lt;SPAN&gt;*compute old residual and collect data to plot r*&lt;/SPAN&gt;&lt;SPAN&gt;numOfIteration;

        res &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;; res_1 &lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;0&lt;/SPAN&gt;&lt;SPAN&gt;;
        do i&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;1&lt;/SPAN&gt; &lt;SPAN&gt;to&lt;/SPAN&gt;&lt;SPAN&gt; m;
            residual_0 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;(theta_0Old&lt;SPAN&gt;*&lt;/SPAN&gt;x0 &lt;SPAN&gt;+&lt;/SPAN&gt; theta_1Old&lt;SPAN&gt;*&lt;/SPAN&gt;me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;i,2&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;) &lt;SPAN&gt;-&lt;/SPAN&gt; me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;i,1&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;;
            res &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; res &lt;SPAN&gt;+&lt;/SPAN&gt; (residual_0&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;SPAN&gt;x0);
            res_1 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; res_1 &lt;SPAN&gt;+&lt;/SPAN&gt; (residual_0&lt;SPAN&gt;*&lt;/SPAN&gt;me&lt;SPAN&gt;[&lt;/SPAN&gt;&lt;SPAN&gt;i,2&lt;/SPAN&gt;&lt;SPAN&gt;]&lt;/SPAN&gt;&lt;SPAN&gt;);
        &lt;/SPAN&gt;&lt;SPAN&gt;end&lt;/SPAN&gt;&lt;SPAN&gt;;
        &lt;/SPAN&gt;&lt;SPAN&gt;        theta_0 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; theta_0Old &lt;SPAN&gt;-&lt;/SPAN&gt; alpha&lt;SPAN&gt;*&lt;/SPAN&gt;res&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;m;
        theta_1 &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; theta_1Old &lt;SPAN&gt;-&lt;/SPAN&gt; alpha&lt;SPAN&gt;*&lt;/SPAN&gt;res_1&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;m;

    &lt;/SPAN&gt;&lt;SPAN&gt;*update residual and decide whether it'&lt;/SPAN&gt;&lt;SPAN&gt;s convergence;
        r2 = 0;
        do i=1 to m;
            residual_tt =(theta_0*x0 + theta_1*me[i,2]) - me[i,1];
            r2 = r2+residual_tt*residual_tt;
        end;
        Jtheta_new = r2/2/m;
        ov = abs(Jtheta_new - Jtheta);
    *update residual and decide whether it&lt;/SPAN&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;s convergence;    
    &lt;/SPAN&gt;&lt;SPAN&gt;end&lt;/SPAN&gt;&lt;SPAN&gt;;
    &lt;/SPAN&gt;&lt;SPAN&gt;print&lt;/SPAN&gt;&lt;SPAN&gt; ov;
    call pgraf(xy,&lt;/SPAN&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;*&lt;/SPAN&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;,&lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;x&lt;/SPAN&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;,&lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;y&lt;/SPAN&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;,&lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;mmmmm&lt;/SPAN&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;&lt;SPAN&gt;);

    theta_0_last &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; theta_0&lt;SPAN&gt;*&lt;/SPAN&gt;s1&lt;SPAN&gt;+&lt;/SPAN&gt;mean_s1&lt;SPAN&gt;-&lt;/SPAN&gt;mean_s2&lt;SPAN&gt;*&lt;/SPAN&gt;s1&lt;SPAN&gt;*&lt;/SPAN&gt;theta_1&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;s2;
    theta_1_last &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; theta_1&lt;SPAN&gt;*&lt;/SPAN&gt;s1&lt;SPAN&gt;/&lt;/SPAN&gt;&lt;SPAN&gt;s2;
    &lt;/SPAN&gt;&lt;SPAN&gt;print&lt;/SPAN&gt;&lt;SPAN&gt; theta_0_last theta_1_last;
    run;
quit;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 19 Aug 2019 07:37:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Error-execution-Matrix-has-not-been-set-to-a-value/m-p/582060#M4780</guid>
      <dc:creator>twopunchman</dc:creator>
      <dc:date>2019-08-19T07:37:50Z</dc:date>
    </item>
    <item>
      <title>Re: Error: (execution)Matrix has not been set to a value</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Error-execution-Matrix-has-not-been-set-to-a-value/m-p/582061#M4781</link>
      <description>&lt;P&gt;Welcome to the SAS Community &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The code works fine on my site and gives a seemingly usable result?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Remember however, that you do not want the Run Statement at the bottom. The Quit statement is enough.&lt;/P&gt;</description>
      <pubDate>Mon, 19 Aug 2019 07:46:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Error-execution-Matrix-has-not-been-set-to-a-value/m-p/582061#M4781</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2019-08-19T07:46:17Z</dc:date>
    </item>
    <item>
      <title>Re: Error: (execution)Matrix has not been set to a value</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Error-execution-Matrix-has-not-been-set-to-a-value/m-p/582062#M4782</link>
      <description>&lt;P&gt;Thank you so much! It seems I misspelled a variable name in SAS. LOL. Also thank you for your suggestion about the run statement.&lt;/P&gt;</description>
      <pubDate>Mon, 19 Aug 2019 07:57:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Error-execution-Matrix-has-not-been-set-to-a-value/m-p/582062#M4782</guid>
      <dc:creator>twopunchman</dc:creator>
      <dc:date>2019-08-19T07:57:56Z</dc:date>
    </item>
    <item>
      <title>Re: Error: (execution)Matrix has not been set to a value</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Error-execution-Matrix-has-not-been-set-to-a-value/m-p/582063#M4783</link>
      <description>&lt;P&gt;Anytime. Glad you found your answer &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 19 Aug 2019 08:06:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Error-execution-Matrix-has-not-been-set-to-a-value/m-p/582063#M4783</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2019-08-19T08:06:15Z</dc:date>
    </item>
    <item>
      <title>Re: Error: (execution)Matrix has not been set to a value</title>
      <link>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Error-execution-Matrix-has-not-been-set-to-a-value/m-p/582100#M4784</link>
      <description>&lt;P&gt;If I may offer two suggestions:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1. Do not use RESET&amp;nbsp;deflib=Sashelp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; If you try to write a data set you will get an error message the says you do not have write permission for that library.&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;Instead, keep RESET deflib=WORK (the default) and use the two-level data set name when you want to read data. For example,&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;use sashelp.class;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2. The PGRAF routine produces ancient line-plot output. Use the newer ODS graphics, such as&amp;nbsp;&lt;/P&gt;
&lt;P&gt;title 'mmmmm';&lt;BR /&gt;call series(xy[,1],xy[,2]) label={'x' 'y'} ;&lt;/P&gt;</description>
      <pubDate>Mon, 19 Aug 2019 13:12:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-IML-Software-and-Matrix/Error-execution-Matrix-has-not-been-set-to-a-value/m-p/582100#M4784</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2019-08-19T13:12:04Z</dc:date>
    </item>
  </channel>
</rss>

