<?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 Re: Generate an index value  used in calculating Predicted values and optimize Sum square error in Mathematical Optimization, Discrete-Event Simulation, and OR</title>
    <link>https://communities.sas.com/t5/Mathematical-Optimization/Generate-an-index-value-used-in-calculating-Predicted-values-and/m-p/751138#M3431</link>
    <description>&lt;P&gt;Thanks, this works when I checked on my system, but I don't have SAS/OR component installed on SAS EG for office system. Is there a way we can do this using if else loop. As it is the only work around for me right now in absence of SAS/OR&lt;/P&gt;</description>
    <pubDate>Wed, 30 Jun 2021 07:12:41 GMT</pubDate>
    <dc:creator>Satyakshma</dc:creator>
    <dc:date>2021-06-30T07:12:41Z</dc:date>
    <item>
      <title>Generate an index value  used in calculating Predicted values and optimize Sum square error</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Generate-an-index-value-used-in-calculating-Predicted-values-and/m-p/740003#M3389</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have to calculated predicted PD for year 2015, 2016 and 2017 for Bucket1, Bucket2, Bucket3 and Bucket4 using a &lt;STRONG&gt;Z_score&lt;/STRONG&gt; and an &lt;STRONG&gt;Index value&lt;/STRONG&gt;. I already have &lt;STRONG&gt;Z_Score&lt;/STRONG&gt; from other table, but I need to generate an&amp;nbsp;&lt;STRONG&gt;Index value &lt;/STRONG&gt;(which is a&amp;nbsp;random value).&lt;BR /&gt;The &lt;STRONG&gt;Index value&lt;/STRONG&gt;&amp;nbsp;to be generated should be such that that when we calculate predicted PD using it for each year. The sum square errors of Predicted PDs and Actual PDs should be minimum.&lt;/P&gt;&lt;P&gt;I am able to do this in Excel using Run solver, and I read that proc optmodel is an equivalent for this in SAS. But I am not able to use proc opt model in SAS EG. Is there any other way I can do this? If yes then please suggest.&lt;/P&gt;&lt;P&gt;If not, then I need help in coding this using Proc opt model as I am not familiar with usage of it&lt;/P&gt;&lt;P&gt;Attached is the Input table and desired output table in excel file:&lt;/P&gt;&lt;P&gt;Table 1: Using &lt;STRONG&gt;Z Score&lt;/STRONG&gt; from this&lt;/P&gt;&lt;P&gt;Table 2: Bucket-wise Actual PDs for each year&lt;/P&gt;&lt;P&gt;Table 3: Highlighted yellow values are index values generated, and used in calculating predicted values&lt;/P&gt;&lt;P&gt;Table 4: Min sum of squares between actual and predicted and Index value.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please help with this, as I am in urgent need to perform this calculation in SAS.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 08 May 2021 20:39:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Generate-an-index-value-used-in-calculating-Predicted-values-and/m-p/740003#M3389</guid>
      <dc:creator>Satyakshma</dc:creator>
      <dc:date>2021-05-08T20:39:57Z</dc:date>
    </item>
    <item>
      <title>Re: Generate an index value  used in calculating Predicted values and optimize Sum square error</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Generate-an-index-value-used-in-calculating-Predicted-values-and/m-p/740206#M3390</link>
      <description>&lt;P&gt;The following does what you want:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data zData;
   input bucket Z_score;
   datalines;
1 -2.38219471237423
2 -0.642830996719877
3 -0.190964264784506
4  0.379313913718413
;

%let minYear = 2015;
%let maxYear = 2018;
data actualData;
   input bucket actual&amp;amp;minYear-actual&amp;amp;maxYear;
   datalines;
1 0.011488175674031 0.006578316410400 0.005081508424610 0.011271589592748
2 0.323791550923876 0.223834610249151 0.180403588330841 0.312637786039641
3 0.500800479192011 0.373187463052586 0.384055738171937 0.439063500503939
4 0.693121340842155 0.592898832157161 0.571297020124314 0.733773269523783
;

proc optmodel;
   set BUCKETS;
   num z_score {BUCKETS};
   read data zData into BUCKETS=[bucket] z_score;

   set YEARS = &amp;amp;minYear...&amp;amp;maxYear;
   num actual {BUCKETS, YEARS};
   read data actualData into [bucket] {y in YEARS} &amp;lt;actual[bucket,y]=col('actual'||y)&amp;gt;;

   var Index {YEARS};
   var Predicted {BUCKETS, YEARS};
   var Error {BUCKETS, YEARS};

   min SSE = sum {b in BUCKETS, y in YEARS} Error[b,y]^2;

   con PredictedCon {b in BUCKETS, y in YEARS}:
      Predicted[b,y] = CDF('NORMAL', Index[y]+z_score[b]);

   con ErrorCon {b in BUCKETS, y in YEARS}:
      Error[b,y] = Predicted[b,y] - actual[b,y];

   solve;

   print actual;
   print Predicted;
   print {y in YEARS} (sum {b in BUCKETS} Error[b,y]^2) Index;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;DIV class="branch"&gt;
&lt;TABLE class="systitleandfootercontainer" border="0" summary="Page Layout" width="100%" frame="void" rules="none" cellspacing="1" cellpadding="1"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="c systemtitle"&gt;The SAS System&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;BR /&gt;
&lt;DIV class="c proctitle"&gt;The OPTMODEL Procedure&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Optmodel: Solution Summary" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="c b header" colspan="2" scope="colgroup"&gt;Solution Summary&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Solver&lt;/TH&gt;
&lt;TD class="r data"&gt;NLP&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Algorithm&lt;/TH&gt;
&lt;TD class="r data"&gt;Interior Point Direct&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Objective Function&lt;/TH&gt;
&lt;TD class="r data"&gt;SSE&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Solution Status&lt;/TH&gt;
&lt;TD class="r data"&gt;Optimal&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Objective Value&lt;/TH&gt;
&lt;TD class="r data"&gt;0.0048361802&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;&amp;nbsp;&lt;/TH&gt;
&lt;TD class="r data"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Optimality Error&lt;/TH&gt;
&lt;TD class="r data"&gt;7.917181E-10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Infeasibility&lt;/TH&gt;
&lt;TD class="r data"&gt;3.991606E-10&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;&amp;nbsp;&lt;/TH&gt;
&lt;TD class="r data"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Iterations&lt;/TH&gt;
&lt;TD class="r data"&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Presolve Time&lt;/TH&gt;
&lt;TD class="r data"&gt;0.00&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;Solution Time&lt;/TH&gt;
&lt;TD class="r data"&gt;0.01&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;BR /&gt;&lt;A target="_blank" name="IDX172"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Optmodel: actual" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt;&lt;/COLGROUP&gt; &lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="c b header" colspan="5" scope="colgroup"&gt;actual&lt;/TH&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="c headerempty" scope="col"&gt;&amp;nbsp;&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;2015&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;2016&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;2017&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;2018&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;1&lt;/TH&gt;
&lt;TD class="r data"&gt;0.0114882&lt;/TD&gt;
&lt;TD class="r data"&gt;0.0065783&lt;/TD&gt;
&lt;TD class="r data"&gt;0.0050815&lt;/TD&gt;
&lt;TD class="r data"&gt;0.0112716&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;2&lt;/TH&gt;
&lt;TD class="r data"&gt;0.3237916&lt;/TD&gt;
&lt;TD class="r data"&gt;0.2238346&lt;/TD&gt;
&lt;TD class="r data"&gt;0.1804036&lt;/TD&gt;
&lt;TD class="r data"&gt;0.3126378&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;3&lt;/TH&gt;
&lt;TD class="r data"&gt;0.5008005&lt;/TD&gt;
&lt;TD class="r data"&gt;0.3731875&lt;/TD&gt;
&lt;TD class="r data"&gt;0.3840557&lt;/TD&gt;
&lt;TD class="r data"&gt;0.4390635&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;4&lt;/TH&gt;
&lt;TD class="r data"&gt;0.6931213&lt;/TD&gt;
&lt;TD class="r data"&gt;0.5928988&lt;/TD&gt;
&lt;TD class="r data"&gt;0.5712970&lt;/TD&gt;
&lt;TD class="r data"&gt;0.7337733&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;BR /&gt;&lt;A target="_blank" name="IDX173"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Optmodel: Predicted" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt;&lt;/COLGROUP&gt; &lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="c b header" colspan="5" scope="colgroup"&gt;Predicted&lt;/TH&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="c headerempty" scope="col"&gt;&amp;nbsp;&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;2015&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;2016&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;2017&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;2018&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;1&lt;/TH&gt;
&lt;TD class="r data"&gt;0.0135008&lt;/TD&gt;
&lt;TD class="r data"&gt;0.0059413&lt;/TD&gt;
&lt;TD class="r data"&gt;0.0052249&lt;/TD&gt;
&lt;TD class="r data"&gt;0.0123153&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;2&lt;/TH&gt;
&lt;TD class="r data"&gt;0.3184164&lt;/TD&gt;
&lt;TD class="r data"&gt;0.2188015&lt;/TD&gt;
&lt;TD class="r data"&gt;0.2057626&lt;/TD&gt;
&lt;TD class="r data"&gt;0.3058023&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;3&lt;/TH&gt;
&lt;TD class="r data"&gt;0.4919160&lt;/TD&gt;
&lt;TD class="r data"&gt;0.3728249&lt;/TD&gt;
&lt;TD class="r data"&gt;0.3559350&lt;/TD&gt;
&lt;TD class="r data"&gt;0.4777037&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;4&lt;/TH&gt;
&lt;TD class="r data"&gt;0.7088449&lt;/TD&gt;
&lt;TD class="r data"&gt;0.5971192&lt;/TD&gt;
&lt;TD class="r data"&gt;0.5796242&lt;/TD&gt;
&lt;TD class="r data"&gt;0.6965001&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;BR /&gt;&lt;A target="_blank" name="IDX174"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;DIV align="center"&gt;
&lt;TABLE class="table" summary="Procedure Optmodel: PrintTable" frame="box" rules="all" cellspacing="0" cellpadding="5"&gt;&lt;COLGROUP&gt; &lt;COL /&gt;&lt;/COLGROUP&gt; &lt;COLGROUP&gt; &lt;COL /&gt; &lt;COL /&gt;&lt;/COLGROUP&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TH class="l b header" scope="col"&gt;[1]&lt;/TH&gt;
&lt;TH class="c headerempty" scope="col"&gt;&amp;nbsp;&lt;/TH&gt;
&lt;TH class="r b header" scope="col"&gt;Index&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;2015&lt;/TH&gt;
&lt;TD class="r data"&gt;0.000359105&lt;/TD&gt;
&lt;TD class="r data"&gt;0.17070&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;2016&lt;/TH&gt;
&lt;TD class="r data"&gt;0.000043681&lt;/TD&gt;
&lt;TD class="r data"&gt;-0.13342&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;2017&lt;/TH&gt;
&lt;TD class="r data"&gt;0.001503220&lt;/TD&gt;
&lt;TD class="r data"&gt;-0.17838&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TH class="l rowheader" scope="row"&gt;2018&lt;/TH&gt;
&lt;TD class="r data"&gt;0.002930174&lt;/TD&gt;
&lt;TD class="r data"&gt;0.13505&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Mon, 10 May 2021 15:17:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Generate-an-index-value-used-in-calculating-Predicted-values-and/m-p/740206#M3390</guid>
      <dc:creator>RobPratt</dc:creator>
      <dc:date>2021-05-10T15:17:05Z</dc:date>
    </item>
    <item>
      <title>Re: Generate an index value  used in calculating Predicted values and optimize Sum square error</title>
      <link>https://communities.sas.com/t5/Mathematical-Optimization/Generate-an-index-value-used-in-calculating-Predicted-values-and/m-p/751138#M3431</link>
      <description>&lt;P&gt;Thanks, this works when I checked on my system, but I don't have SAS/OR component installed on SAS EG for office system. Is there a way we can do this using if else loop. As it is the only work around for me right now in absence of SAS/OR&lt;/P&gt;</description>
      <pubDate>Wed, 30 Jun 2021 07:12:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/Mathematical-Optimization/Generate-an-index-value-used-in-calculating-Predicted-values-and/m-p/751138#M3431</guid>
      <dc:creator>Satyakshma</dc:creator>
      <dc:date>2021-06-30T07:12:41Z</dc:date>
    </item>
  </channel>
</rss>

