ArtsAutosBooksBusinessEducationEntertainmentFamilyFashionFoodGamesGenderHealthHolidaysHomeHubPagesPersonal FinancePetsPoliticsReligionSportsTechnologyTravel

Coding a Simple Average Can Be Complex

Updated on August 18, 2020

Choose the Right Average

In most cases you need the arithmetic mean, which you get by summing all the numbers and dividing by the size of the set.


This is not always the right choice. Sometimes you need the Harmonic Mean, the geometric mean or some other type of mean. These may be significantly different. The geometric mean lets you compare two sets of data that cover different ranges while the logarithmic mean is useful in heat transfer calculations.

Here I will only look at the arithmetic mean. If you want to know about other types of mean or are suffering from insomnia consult a textbook.

The Arithmetic Mean

Assuming you or your architect have decided that the arithmetic mean is the correct mean for the project (and that this is an important choice) calculating the mean should be easy. Well it is if the numbers are all well behaved available and the values or size of the set do not change during the calculation.

Suppose however, as an example, we have a sensor and need to know the mean value of its output (or, to make matters a little more complex a sliding mean). This might be dirty data from a wave power generator and a sliding mean the best way to clean it up to minimum usable standard. This is a big data scenario with lots of data coming in fast.

The first thing you need to know is whether updating the average can be done before new data arrives. If the time taken to update the average is (significantly) less than the minimum interval between the arrival of one datum and the next life is again fairly simple.

Except that you may need to know how to tell when the average needs updating. One way would be to duplicate the sensor output using one copy to alert your program that it needs to read the datum from the analogue to digital converter that received the other copy. This could be done with memory mapped graphics. Another option is to use a special value, such as Java’s NULL to show that no new data has been received and poll the location where the new data is stored. If it is not null use the value then set it to NULL.

If the data arrives randomly and the mean interval between data arriving is acceptable you may be able to use a buffer, say a queue. If the data still arrives too fast you may need faster hardware or to delegate computation of partial sums to specialist hardware. In the case of the sensore above this may mean some form of analogue smoothing.

These considerations are unlikely ever to affect the average (sorry) enterprise developer who can rely on their library’s MEAN(..) method.

The purpose of this section has been to show that a slightly different use case may require more complex computation and an unexpected degree of thought rather than discuss minute details.

Badly Behaved numbers

In Mathematics numbers are numbers abstract objects and can be manipulated without problems. In a computer numbers are represented by a finite string of bits and adding two numbers or numbers with very similar magnitude and different signs could give an inaccurate result. Integers can overflow and floating point numbers can introduce rounding error. The simplest solution is to use infinite precision arithmetic, which will increase the computation time. Other solutions include sorting the data and adding the sorted values starting with the smallest or sorting the data into bins and keeping a running total of the contents of each bin.

Summary

Even a mathematically simple computation can spark complexity in specialist use cases. This will be especially true in the case of “Big Data”: high volume, high velocity and highly variable or in the embedded space where space and time may be highly constrained (think car brakes).

Comments

    0 of 8192 characters used
    Post Comment

    No comments yet.

    working

    This website uses cookies

    As a user in the EEA, your approval is needed on a few things. To provide a better website experience, hubpages.com uses cookies (and other similar technologies) and may collect, process, and share personal data. Please choose which areas of our service you consent to our doing so.

    For more information on managing or withdrawing consents and how we handle data, visit our Privacy Policy at: https://corp.maven.io/privacy-policy

    Show Details
    Necessary
    HubPages Device IDThis is used to identify particular browsers or devices when the access the service, and is used for security reasons.
    LoginThis is necessary to sign in to the HubPages Service.
    Google RecaptchaThis is used to prevent bots and spam. (Privacy Policy)
    AkismetThis is used to detect comment spam. (Privacy Policy)
    HubPages Google AnalyticsThis is used to provide data on traffic to our website, all personally identifyable data is anonymized. (Privacy Policy)
    HubPages Traffic PixelThis is used to collect data on traffic to articles and other pages on our site. Unless you are signed in to a HubPages account, all personally identifiable information is anonymized.
    Amazon Web ServicesThis is a cloud services platform that we used to host our service. (Privacy Policy)
    CloudflareThis is a cloud CDN service that we use to efficiently deliver files required for our service to operate such as javascript, cascading style sheets, images, and videos. (Privacy Policy)
    Google Hosted LibrariesJavascript software libraries such as jQuery are loaded at endpoints on the googleapis.com or gstatic.com domains, for performance and efficiency reasons. (Privacy Policy)
    Features
    Google Custom SearchThis is feature allows you to search the site. (Privacy Policy)
    Google MapsSome articles have Google Maps embedded in them. (Privacy Policy)
    Google ChartsThis is used to display charts and graphs on articles and the author center. (Privacy Policy)
    Google AdSense Host APIThis service allows you to sign up for or associate a Google AdSense account with HubPages, so that you can earn money from ads on your articles. No data is shared unless you engage with this feature. (Privacy Policy)
    Google YouTubeSome articles have YouTube videos embedded in them. (Privacy Policy)
    VimeoSome articles have Vimeo videos embedded in them. (Privacy Policy)
    PaypalThis is used for a registered author who enrolls in the HubPages Earnings program and requests to be paid via PayPal. No data is shared with Paypal unless you engage with this feature. (Privacy Policy)
    Facebook LoginYou can use this to streamline signing up for, or signing in to your Hubpages account. No data is shared with Facebook unless you engage with this feature. (Privacy Policy)
    MavenThis supports the Maven widget and search functionality. (Privacy Policy)
    Marketing
    Google AdSenseThis is an ad network. (Privacy Policy)
    Google DoubleClickGoogle provides ad serving technology and runs an ad network. (Privacy Policy)
    Index ExchangeThis is an ad network. (Privacy Policy)
    SovrnThis is an ad network. (Privacy Policy)
    Facebook AdsThis is an ad network. (Privacy Policy)
    Amazon Unified Ad MarketplaceThis is an ad network. (Privacy Policy)
    AppNexusThis is an ad network. (Privacy Policy)
    OpenxThis is an ad network. (Privacy Policy)
    Rubicon ProjectThis is an ad network. (Privacy Policy)
    TripleLiftThis is an ad network. (Privacy Policy)
    Say MediaWe partner with Say Media to deliver ad campaigns on our sites. (Privacy Policy)
    Remarketing PixelsWe may use remarketing pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to advertise the HubPages Service to people that have visited our sites.
    Conversion Tracking PixelsWe may use conversion tracking pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to identify when an advertisement has successfully resulted in the desired action, such as signing up for the HubPages Service or publishing an article on the HubPages Service.
    Statistics
    Author Google AnalyticsThis is used to provide traffic data and reports to the authors of articles on the HubPages Service. (Privacy Policy)
    ComscoreComScore is a media measurement and analytics company providing marketing data and analytics to enterprises, media and advertising agencies, and publishers. Non-consent will result in ComScore only processing obfuscated personal data. (Privacy Policy)
    Amazon Tracking PixelSome articles display amazon products as part of the Amazon Affiliate program, this pixel provides traffic statistics for those products (Privacy Policy)
    ClickscoThis is a data management platform studying reader behavior (Privacy Policy)