<?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: year to date Standard Deviation in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/year-to-date-Standard-Deviation/m-p/235543#M268184</link>
    <description>&lt;P&gt;Here's another approach, just in case this appeals to you more.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you wanted the mean instead of the standard deviation, you could just keep running SUM and running COUNT.&amp;nbsp; Then on each observation divide to get the mean.&amp;nbsp; Of course, you would have to re-set the running SUM and running COUNT each time you hit a new MEASURE ... but you're already doing that for the COUNT.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Similarly, standard deviation can be expressed as a function of the running SUM, running COUNT, and running SUM OF SQUARED VALUES.&amp;nbsp; By applying that sort of a formula, you would never have to worry about how many array elements you need.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Good luck.&lt;/P&gt;</description>
    <pubDate>Thu, 19 Nov 2015 20:34:39 GMT</pubDate>
    <dc:creator>Astounding</dc:creator>
    <dc:date>2015-11-19T20:34:39Z</dc:date>
    <item>
      <title>year to date Standard Deviation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/year-to-date-Standard-Deviation/m-p/235534#M268182</link>
      <description>&lt;P&gt;I have a dataset with Dates, a variable that defines what the value measures, and the value.&amp;nbsp; I want to get the year-to-date standard deviation for each date.&amp;nbsp; So i have something like this, and want to create this Std column...&lt;/P&gt;&lt;P&gt;Date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Measure&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; value&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; std&lt;/P&gt;&lt;P&gt;jan01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Batch Payment&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 93&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; .&lt;/P&gt;&lt;P&gt;jan08&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Batch Payment&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 128&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 24.64&lt;/P&gt;&lt;P&gt;jan15&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Batch Payment&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 126&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 19.58&lt;/P&gt;&lt;P&gt;jan01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cost per Claim &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 311&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;jan08&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Cost per Claim &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 385&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18.38&lt;/P&gt;&lt;P&gt;jan15&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Cost per Claim &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 281&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 16.29&lt;/P&gt;&lt;P&gt;jan01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Pended Claims &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 22372&lt;/P&gt;&lt;P&gt;jan08&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Pended Claims &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 18389&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2816.41&lt;/P&gt;&lt;P&gt;jan15&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Pended Claims &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 15869&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3278.81&lt;/P&gt;&lt;P&gt;I tried using this...&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data testing;
set test2;

retain count;
by measure;

if first.measure then count=1;
else count=1+count;

array std_weeks[46] _temporary_;

std_weeks[count]=value;

if first.measure then std = .;
else std = std(of std_weeks[*]);

run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Right now I have 46 weeks of data, I plan to read the max of count into a variable and use that variable in place of the 46.&amp;nbsp; What I have there works for the first group of measure, but the next measure's std includes values from the previous measure (since the array is set to 46).&amp;nbsp; Can I make this work with arrays?&amp;nbsp; Is there another way to achieve the desired result?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;-Amarpal&lt;/P&gt;</description>
      <pubDate>Thu, 19 Nov 2015 20:06:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/year-to-date-Standard-Deviation/m-p/235534#M268182</guid>
      <dc:creator>Amarpal</dc:creator>
      <dc:date>2015-11-19T20:06:38Z</dc:date>
    </item>
    <item>
      <title>Re: year to date Standard Deviation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/year-to-date-Standard-Deviation/m-p/235539#M268183</link>
      <description>You need to reset your array when the measure changes.&lt;BR /&gt;&lt;BR /&gt;See code here that works for other moving metrics:&lt;BR /&gt;&lt;BR /&gt;&lt;A href="https://communities.sas.com/message/244232" target="_blank"&gt;https://communities.sas.com/message/244232&lt;/A&gt;&lt;BR /&gt;</description>
      <pubDate>Thu, 19 Nov 2015 20:11:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/year-to-date-Standard-Deviation/m-p/235539#M268183</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2015-11-19T20:11:09Z</dc:date>
    </item>
    <item>
      <title>Re: year to date Standard Deviation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/year-to-date-Standard-Deviation/m-p/235543#M268184</link>
      <description>&lt;P&gt;Here's another approach, just in case this appeals to you more.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you wanted the mean instead of the standard deviation, you could just keep running SUM and running COUNT.&amp;nbsp; Then on each observation divide to get the mean.&amp;nbsp; Of course, you would have to re-set the running SUM and running COUNT each time you hit a new MEASURE ... but you're already doing that for the COUNT.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Similarly, standard deviation can be expressed as a function of the running SUM, running COUNT, and running SUM OF SQUARED VALUES.&amp;nbsp; By applying that sort of a formula, you would never have to worry about how many array elements you need.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Good luck.&lt;/P&gt;</description>
      <pubDate>Thu, 19 Nov 2015 20:34:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/year-to-date-Standard-Deviation/m-p/235543#M268184</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2015-11-19T20:34:39Z</dc:date>
    </item>
    <item>
      <title>Re: year to date Standard Deviation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/year-to-date-Standard-Deviation/m-p/235562#M268185</link>
      <description>&lt;P&gt;The sort of formula&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4954"&gt;@Astounding﻿&lt;/a&gt;&amp;nbsp;is referring to would work like this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data testing;
set test2; by measure;
if first.measure then do; n=0; sx=0; sx2=0; end;
if not missing(value) then do;
    sx + value;
    sx2 + value*value;
    n + 1;
    if n&amp;gt;1 then std = sqrt((sx2-sx*sx/n)/(n-1));
    end;
drop n sx sx2;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 19 Nov 2015 21:32:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/year-to-date-Standard-Deviation/m-p/235562#M268185</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2015-11-19T21:32:26Z</dc:date>
    </item>
  </channel>
</rss>

