Example #1
0
        public void BuildStats()
        {
            int[] outcomes = outcomeAction.GetCounts();

            int numCont = continuousConditions.Length;
            int numDisc = discreteConditions.Length;

            // Accumulate all the counts and sums
            foreach (Observation obs in obsTab)
            {
                int outcome = obs.outcome;

                for (int i = 0; i < numCont; i++)
                {
                    int[] sum = continuousConditions[i].GetSums();
                    sum[outcome] += obs.continuousValues[i];

                    int[] sumSq = continuousConditions[i].GetSqSums();
                    sumSq[outcome] += obs.continuousValues[i] * obs.continuousValues[i];
                }

                for (int i = 0; i < numDisc; i++)
                {
                    int[,] count = discreteConditions[i].GetCounts();
                    int val = obs.discreteValues[i];
                    count[val, outcome]++;
                }

                outcomes[outcome]++;
            }

            for (int i = 0; i < numCont; i++)
            {
                continuousConditions[i].Init(outcomeAction);
            }

            for (int i = 0; i < numDisc; i++)
            {
                discreteConditions[i].CalcProps(outcomeAction);
            }

            outcomeAction.CalcProps(obsTab.Count);
        }