void testTRobustEstimator3_columns_specific() { const int N_OBSERVATIONS = 10; const int N_ATTRIBUTES = 3; Double_t data[N_ATTRIBUTES]; TRobustEstimator rob(N_OBSERVATIONS, N_ATTRIBUTES); double s0 = 0; Double_t x1 =1; Double_t x2 = 3; Double_t x3 = 5; FILE *fp; fp = fopen("testTRobustEstimator3_columns_specific.txt", "w"); for (int i = 1; i <= N_OBSERVATIONS; i++) { if (i%10 == 0) { data[0] = 100; data[1] = 0; data[2] = 0; } else { data[0] = x1; data[1] = x2; data[2] = x3; x1++; if (x1 == 4) x1 = 1; x2++; if (x2 == 6) x2 = 3; x3++; if (x3 == 8) x3 = 5; } rob.AddRow(data); s0 = s0 + data[0]; fprintf(fp, "%f %f %f\n", data[0], data[1], data[2]); //fprintf(stderr, "%f %f %f\n", data[0], data[1], data[2]); } fclose(fp); double avg0 = s0 / N_OBSERVATIONS; fprintf(stderr, "--------------------> Mean value of attribute 0 = %f\n", avg0); // 11.8 rob.Evaluate(); for (int i = 0; i < N_ATTRIBUTES; i++) { fprintf(stderr, "Mean value of attribute %d = %f\n", i, rob.GetMean()[0][i]); } int Nobservations = rob.GetNumberObservations(); fprintf(stderr, "Number of observations: %d\n", Nobservations); int Noutliers = rob.GetNOut(); fprintf(stderr, "Number of Noutliers: %d (%.1f%%)\n", Noutliers, (double)Noutliers/(double)Nobservations*100); TArrayI OutliersIndexesArray = *(rob.GetOuliers()); //returns an array of outlier indexes int OutliersIndexesArraySize = OutliersIndexesArray.fN; //fprintf(stderr, "OutliersIndexesArraySize: %d\n", OutliersIndexesArraySize); for (int i=0; iPrint(); }