Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/08/15 09:50:00 (9 years ago)
Author:
gkronber
Message:

#2415: merged r12612 from trunk to stable

Location:
stable
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Problems.DataAnalysis

  • stable/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Transformations/ShiftStandardDistributionTransformation.cs

    r11114 r12667  
    88
    99namespace HeuristicLab.Problems.DataAnalysis {
     10  [StorableClass]
    1011  [Item("Shift Standard Distribution Transformation", "f(x) = ((x - m_org) / s_org ) * s_tar + m_tar | Represents Transformation to unit standard deviation and additional linear transformation to a target Mean and Standard deviation")]
    1112  public class ShiftStandardDistributionTransformation : Transformation<double> {
     
    6970    }
    7071
    71     // http://en.wikipedia.org/wiki/Standard_deviation
    72     // http://www.statistics4u.info/fundstat_germ/ee_ztransform.html
    73     // https://www.uni-due.de/~bm0061/vorl12.pdf p5
    7472    public override IEnumerable<double> Apply(IEnumerable<double> data) {
    7573      ConfigureParameters(data);
    76       if (OriginalStandardDeviation == 0.0) {
    77         foreach (var e in data) {
    78           yield return e;
    79         }
    80         yield break;
     74      if (OriginalStandardDeviation.IsAlmost(0.0)) {
     75        return data;
    8176      }
    82 
    83       foreach (var e in data) {
    84         double unitNormalDistributedValue = (e - OriginalMean) / OriginalStandardDeviation;
    85         yield return unitNormalDistributedValue * StandardDeviation + Mean;
    86       }
     77      var old_m = OriginalMean;
     78      var old_s = OriginalStandardDeviation;
     79      var m = Mean;
     80      var s = StandardDeviation;
     81      return data
     82        .Select(d => (d - old_m) / old_s) // standardized
     83        .Select(d => d * s + m);
    8784    }
    8885
     
    9087      ConfigureParameters(data);
    9188      errorMsg = "";
    92       if (OriginalStandardDeviation == 0.0) {
     89      if (OriginalStandardDeviation.IsAlmost(0.0)) {
    9390        errorMsg = "Standard deviaton for the original data is 0.0, Transformation cannot be applied onto these values.";
    9491        return false;
Note: See TracChangeset for help on using the changeset viewer.