Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class outliers
- {
- public static void main(String[] args)
- {
- Scanner kbd = new Scanner(System.in);
- System.out.print("Enter the number of randomly generated data points \n (an outlier will be created every ten data points): ");
- int arraySize = kbd.nextInt();
- double[] data = getArray(arraySize);
- double[] arrayNew = new double[data.length];
- double q1 = 0, q3 = 0, IQR, lowerFence, upperFence, median;
- median = median(data);
- System.out.println("Original Data set: ");
- printArray(data);
- Arrays.sort(data);
- System.out.println("Sorted Data set: ");
- printArray(data);
- if (median % 2 == 0) //Finds the lower and upper quartiles
- {
- q1 = data[(int)(median/2)];
- q3 = data[(int)(median * 1.5)];
- }
- else
- {
- q1 = data[(int)(median/2)-1];
- q3 = data[(int)(median * 1.5)+1];
- }
- IQR = q3 - q1; //Calculates IQR
- lowerFence = q1 - 3 * IQR; //Calculates lower and upper fences
- upperFence = q3 + 3 * IQR;
- arrayNew = removeOutliers(data, lowerFence, upperFence);
- System.out.println("Data set with outliers removed:");
- printArray(arrayNew);
- }
- public static void printArray(double[] data)
- {
- System.out.println("=========================================================================");
- for(int n = 0; n <= data.length - 1; n++)
- {
- if(data[n] == 0) //Ignores empty slots
- {
- }
- else
- {
- if((n + 1)%10 == 0) //Prints new line every ten data points
- {
- System.out.printf(" %6.2f", data[n]);
- System.out.println();
- }
- else
- System.out.printf(" %6.2f", data[n]);
- }
- }
- System.out.println();
- System.out.println("=========================================================================");
- System.out.println();
- return;
- }
- public static double median(double[] data)
- {
- double median;
- if (data.length%2 == 0)
- median = data.length/2;
- else
- median = data.length/2 - 1;
- return median;
- }
- public static double[] removeOutliers(double[] data, double lFence, double uFence)
- {
- double[] arrayNew = new double[data.length];
- int count = 0; //Counts the data points in arrayRevised
- System.out.println();
- for (int n = 0; n < data.length; n++) {
- if (data[n] > lFence && data[n] < uFence) {
- arrayNew[count] = data[n]; //Adds data points that aren't outliers to the new array
- count ++;
- }
- else {
- System.out.printf("%6.2f is an outlier. \n", data[n]);
- }
- }
- System.out.println();
- return arrayNew;
- }
- public static double[] getArray(int length)
- {
- double[] data = new double[length];
- for(int n = 0; n < data.length; n++)
- {
- if(n%10 == 0)
- data[n] = Math.random()*2000 - 1000;
- else
- data[n] = Math.random()*100;
- }
- return data;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement