<?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: Create solver to get minimum sum square error using PROC FCMP in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Create-solver-to-get-minimum-sum-square-error-using-PROC-FCMP/m-p/767923#M243513</link>
    <description>I can create a simple dataset using datastep but I am not able to create datastep logic to create index value which is used to create predicted value with a condition that sum square error should be minimum.</description>
    <pubDate>Wed, 15 Sep 2021 15:37:47 GMT</pubDate>
    <dc:creator>Satyakshma</dc:creator>
    <dc:date>2021-09-15T15:37:47Z</dc:date>
    <item>
      <title>Create solver to get minimum sum square error using PROC FCMP</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-solver-to-get-minimum-sum-square-error-using-PROC-FCMP/m-p/766233#M242823</link>
      <description>&lt;P&gt;Hello Everyone,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have to calculate the predicted values for year 2015, 2016 and 2017 for Bucket1, Bucket2, Bucket3 and Bucket4 using a&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Z_score&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and an&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Index value&lt;/STRONG&gt;. I already have&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Z_Score&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;from other table, but I need to generate an&amp;nbsp;&lt;STRONG&gt;Index value&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;(which is a&amp;nbsp;random value).&lt;BR /&gt;The&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&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 function, and I need to do this using PROC FCMP in BASE SAS in SAS EG as I don't have SAS/IML or SAS/OR COMPONENT.&amp;nbsp;Please help me with this code as I am new to PROC FCMP.&lt;/P&gt;&lt;P&gt;Attached is the Input table and desired output table:&lt;/P&gt;&lt;P&gt;Table 1: Using&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Z Score&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;from this&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Col1&lt;/TD&gt;&lt;TD&gt;Value 1&lt;/TD&gt;&lt;TD&gt;Z value&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0.86%&lt;/TD&gt;&lt;TD&gt;-2.38&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;26.02%&lt;/TD&gt;&lt;TD&gt;-0.64&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;42.43%&lt;/TD&gt;&lt;TD&gt;-0.19&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;64.78%&lt;/TD&gt;&lt;TD&gt;0.38&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Table 2: Bucket-wise Actual values for each year&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Col1&lt;/TD&gt;&lt;TD&gt;2015&lt;/TD&gt;&lt;TD&gt;2016&lt;/TD&gt;&lt;TD&gt;2017&lt;/TD&gt;&lt;TD&gt;2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1.15%&lt;/TD&gt;&lt;TD&gt;0.66%&lt;/TD&gt;&lt;TD&gt;0.51%&lt;/TD&gt;&lt;TD&gt;1.13%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;32.38%&lt;/TD&gt;&lt;TD&gt;22.38%&lt;/TD&gt;&lt;TD&gt;18.04%&lt;/TD&gt;&lt;TD&gt;31.26%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;50.08%&lt;/TD&gt;&lt;TD&gt;37.32%&lt;/TD&gt;&lt;TD&gt;38.41%&lt;/TD&gt;&lt;TD&gt;43.91%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;69.31%&lt;/TD&gt;&lt;TD&gt;59.29%&lt;/TD&gt;&lt;TD&gt;57.13%&lt;/TD&gt;&lt;TD&gt;73.38%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;99.72%&lt;/TD&gt;&lt;TD&gt;100.00%&lt;/TD&gt;&lt;TD&gt;100.00%&lt;/TD&gt;&lt;TD&gt;100.00%&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Table 3: Index values are random values generated, and used in calculating predicted values in bold&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Index value&lt;/TD&gt;&lt;TD&gt;0.100000&lt;/TD&gt;&lt;TD&gt;0.170699&lt;/TD&gt;&lt;TD&gt;-0.133416&lt;/TD&gt;&lt;TD&gt;-0.178382&lt;/TD&gt;&lt;TD&gt;0.135047&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Col1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;2015&lt;/TD&gt;&lt;TD&gt;2016&lt;/TD&gt;&lt;TD&gt;2017&lt;/TD&gt;&lt;TD&gt;2018&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;1.35%&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;0.59%&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;0.52%&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;1.23%&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;31.84%&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;21.88%&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;20.58%&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;30.58%&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;49.19%&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;37.28%&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;35.59%&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;47.77%&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;70.88%&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;59.71%&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;57.96%&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;69.65%&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Table 4: Min sum of squares (between actual values and predicted values) value and Index value.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Sum of Squares&lt;/TD&gt;&lt;TD&gt;Index&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;0.000&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2015&lt;/TD&gt;&lt;TD&gt;0.000&lt;/TD&gt;&lt;TD&gt;0.17&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2016&lt;/TD&gt;&lt;TD&gt;0.000&lt;/TD&gt;&lt;TD&gt;-0.13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2017&lt;/TD&gt;&lt;TD&gt;0.002&lt;/TD&gt;&lt;TD&gt;-0.18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2018&lt;/TD&gt;&lt;TD&gt;0.003&lt;/TD&gt;&lt;TD&gt;0.14&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have written the below code using proc fcmp for the above problem, but I am not able to create the right code for this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;PROC FCMP OUTLIB=work.functions.ci;&lt;/P&gt;&lt;P&gt;function predict(currentValue);&lt;BR /&gt;return(CDF('NORMAL', currentValue + index));&lt;BR /&gt;endsub;&lt;/P&gt;&lt;P&gt;function sum_square_error(value1,value2);&lt;BR /&gt;diff = (value1-value2);&lt;BR /&gt;return(diff*diff);&lt;BR /&gt;endsub;&lt;/P&gt;&lt;P&gt;function minimum(y,sse,index,value1,value2);&lt;BR /&gt;return(solve("sum_square_error",.,y,min(sse));&lt;BR /&gt;endsub;&lt;/P&gt;&lt;P&gt;QUIT;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;options cmplib=( work.functions);&lt;/P&gt;&lt;P&gt;data test;&lt;BR /&gt;set test;&lt;BR /&gt;predicted = cred_index(Z_score);&lt;BR /&gt;err = sum_square_error(actual,predicted);&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please help with this problem.&lt;/P&gt;</description>
      <pubDate>Mon, 06 Sep 2021 15:10:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-solver-to-get-minimum-sum-square-error-using-PROC-FCMP/m-p/766233#M242823</guid>
      <dc:creator>Satyakshma</dc:creator>
      <dc:date>2021-09-06T15:10:51Z</dc:date>
    </item>
    <item>
      <title>Re: Create solver to get minimum sum square error using PROC FCMP</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-solver-to-get-minimum-sum-square-error-using-PROC-FCMP/m-p/767171#M243180</link>
      <description>&lt;P&gt;Please have a look at&amp;nbsp;&lt;A href="http://support.sas.com/resources/papers/proceedings13/139-2013.pdf" target="_blank"&gt;http://support.sas.com/resources/papers/proceedings13/139-2013.pdf&lt;/A&gt;&amp;nbsp;.&lt;BR /&gt;This will help understand Proc FCMP.&lt;/P&gt;</description>
      <pubDate>Sat, 11 Sep 2021 02:59:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-solver-to-get-minimum-sum-square-error-using-PROC-FCMP/m-p/767171#M243180</guid>
      <dc:creator>Sajid01</dc:creator>
      <dc:date>2021-09-11T02:59:57Z</dc:date>
    </item>
    <item>
      <title>Re: Create solver to get minimum sum square error using PROC FCMP</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-solver-to-get-minimum-sum-square-error-using-PROC-FCMP/m-p/767176#M243183</link>
      <description>&lt;P&gt;I would first write the logic using data step Base SAS syntax. Only once you've got the logic right I'd start converting this to a function using Proc FCMP.&lt;/P&gt;
&lt;P&gt;Getting sample data (created via a SAS data step) and the working data step logic would also help us to support you with the Proc FCMP implementation.&lt;/P&gt;</description>
      <pubDate>Sat, 11 Sep 2021 03:23:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-solver-to-get-minimum-sum-square-error-using-PROC-FCMP/m-p/767176#M243183</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2021-09-11T03:23:20Z</dc:date>
    </item>
    <item>
      <title>Re: Create solver to get minimum sum square error using PROC FCMP</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-solver-to-get-minimum-sum-square-error-using-PROC-FCMP/m-p/767923#M243513</link>
      <description>I can create a simple dataset using datastep but I am not able to create datastep logic to create index value which is used to create predicted value with a condition that sum square error should be minimum.</description>
      <pubDate>Wed, 15 Sep 2021 15:37:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-solver-to-get-minimum-sum-square-error-using-PROC-FCMP/m-p/767923#M243513</guid>
      <dc:creator>Satyakshma</dc:creator>
      <dc:date>2021-09-15T15:37:47Z</dc:date>
    </item>
    <item>
      <title>Re: Create solver to get minimum sum square error using PROC FCMP</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-solver-to-get-minimum-sum-square-error-using-PROC-FCMP/m-p/768012#M243556</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/359295"&gt;@Satyakshma&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;I can create a simple dataset using datastep but I am not able to create datastep logic to create index value which is used to create predicted value with a condition that sum square error should be minimum.&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;There is to my knowledge no logic using Proc FCMP that you couldn't implement directly within a SAS data step - but it should be easier to implement and debug in a SAS data step. That's why I'm proposing data step first, conversion to Proc FCMP second.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Populating an index variable with a random value would be simple but I believe there might be a bit more to your problem and I don't have the subject matter expertise. Calling on other people who might know more.&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13684"&gt;@Rick_SAS&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/462"&gt;@PGStats&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/32733"&gt;@FreelanceReinh&lt;/a&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 15 Sep 2021 23:19:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-solver-to-get-minimum-sum-square-error-using-PROC-FCMP/m-p/768012#M243556</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2021-09-15T23:19:18Z</dc:date>
    </item>
    <item>
      <title>Re: Create solver to get minimum sum square error using PROC FCMP</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-solver-to-get-minimum-sum-square-error-using-PROC-FCMP/m-p/768237#M243655</link>
      <description>Hi Patrick,&lt;BR /&gt;As per my understanding so far in SAS, I can generate random value using RAND( ) function. But my problem statement comes with one condition: this random value is to be used to calculate a "predicted values" as shown in Table 3 such that there is "minimum sum square difference" between these predicted value in Table 3 and actual value in Table 2.&lt;BR /&gt;I am not able to create a logic around, how satisfy this condition in order to get final output.&lt;BR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13684"&gt;@Rick_SAS&lt;/a&gt; &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp&lt;/a&gt; &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/462"&gt;@PGStats&lt;/a&gt; @FreelanceReinhard It would be really helpful if someone can help me with the code as I am really in need to develop SAS code around this.</description>
      <pubDate>Fri, 17 Sep 2021 09:52:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-solver-to-get-minimum-sum-square-error-using-PROC-FCMP/m-p/768237#M243655</guid>
      <dc:creator>Satyakshma</dc:creator>
      <dc:date>2021-09-17T09:52:02Z</dc:date>
    </item>
    <item>
      <title>Re: Create solver to get minimum sum square error using PROC FCMP</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-solver-to-get-minimum-sum-square-error-using-PROC-FCMP/m-p/768238#M243656</link>
      <description>&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13684"&gt;@Rick_SAS&lt;/a&gt; &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp&lt;/a&gt; &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/462"&gt;@PGStats&lt;/a&gt; @FreelanceReinhard &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12447"&gt;@Patrick&lt;/a&gt; Tourmaline&lt;BR /&gt;If this can be done in data step then this will also work for me.</description>
      <pubDate>Fri, 17 Sep 2021 09:54:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-solver-to-get-minimum-sum-square-error-using-PROC-FCMP/m-p/768238#M243656</guid>
      <dc:creator>Satyakshma</dc:creator>
      <dc:date>2021-09-17T09:54:43Z</dc:date>
    </item>
    <item>
      <title>Re: Create solver to get minimum sum square error using PROC FCMP</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-solver-to-get-minimum-sum-square-error-using-PROC-FCMP/m-p/768276#M243669</link>
      <description>You mean this ?&lt;BR /&gt;&lt;A href="https://communities.sas.com/t5/Mathematical-Optimization/get-a-value-after-minimizing-sum-of-squares/m-p/768094" target="_blank"&gt;https://communities.sas.com/t5/Mathematical-Optimization/get-a-value-after-minimizing-sum-of-squares/m-p/768094&lt;/A&gt;&lt;BR /&gt;</description>
      <pubDate>Fri, 17 Sep 2021 12:44:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-solver-to-get-minimum-sum-square-error-using-PROC-FCMP/m-p/768276#M243669</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2021-09-17T12:44:37Z</dc:date>
    </item>
  </channel>
</rss>

