<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: average code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Fri, 29 Aug 2008 12:35:13 GMT</pubDate>
    <description>DZone Snippets: average code</description>
    <item>
      <title>Weighted Mean</title>
      <link>http://snippets.dzone.com/posts/show/4613</link>
      <description>Weighted mean ( http://en.wikipedia.org/wiki/Mean#Weighted_arithmetic_mean )&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;class Array&lt;br /&gt;  #sum (and mean) found on http://snippets.dzone.com/posts/show/2161&lt;br /&gt;  def sum&lt;br /&gt;    inject( nil ) { |sum,x| sum ? sum + x.to_f : x.to_f }&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def mean&lt;br /&gt;    sum.to_f / size&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  #http://en.wikipedia.org/wiki/Mean#Weighted_arithmetic_mean&lt;br /&gt;  def weighted_mean(weights_array)&lt;br /&gt;    raise "Each element of the array must have an accompanying weight.  Array length = #{self.size} versus Weights length = #{weights_array.size}" if weights_array.size != self.size&lt;br /&gt;    w_sum = weights_array.sum&lt;br /&gt;    w_prod = 0&lt;br /&gt;    self.each_index {|i| w_prod += self[i] * weights_array[i].to_f}&lt;br /&gt;    w_prod.to_f / w_sum.to_f&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Example&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&gt;&gt; a = [1,2,3]&lt;br /&gt;=&gt; [1, 2, 3]&lt;br /&gt;&gt;&gt; w = [1,1,1]&lt;br /&gt;=&gt; [1, 1, 1]&lt;br /&gt;&gt;&gt; a.weighted_arithmetic_mean(w)&lt;br /&gt;=&gt; 2.0&lt;br /&gt;&gt;&gt; a.mean&lt;br /&gt;=&gt; 2.0&lt;br /&gt;&gt;&gt; w = [5,2,1]&lt;br /&gt;=&gt; [5, 2, 1]&lt;br /&gt;&gt;&gt; a.weighted_arithmetic_mean(w)&lt;br /&gt;=&gt; 1.5&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 03 Oct 2007 21:29:12 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4613</guid>
      <author>wiseleyb (ben)</author>
    </item>
  </channel>
</rss>
