היסטוגרמות בתדירות אפאצ'י קומונס

1. סקירה כללית

במדריך זה נבחן כיצד אנו יכולים להציג נתונים על היסטוגרמה בעזרת מחלקת התדרים של Apache Commons.

ה תדירות class הוא חלק מחלק מספריית Apache Commons Math המתוארת במאמר זה.

היסטוגרמה היא תרשים של סורגים מחוברים המציגה את הופעת טווח הנתונים במערך נתונים. זה שונה מתרשים עמודות בכך שהוא משמש להצגת התפלגות משתנים כמותיים רציפים ואילו תרשים עמודות משמש להצגת נתונים קטגוריים.

2. תלות בפרויקט

במאמר זה נשתמש בפרויקט Maven עם התלות הבאה:

 org.apache.commons commons-math3 3.6.1 org.knowm.xchart xchart 3.5.2 

ה commons-math3 הספרייה מכילה את תדירות בכיתה בה נשתמש כדי לקבוע את התרחשותם של משתנים במערך הנתונים שלנו. ה xchart הספרייה נשתמש בה להצגת ההיסטוגרמה בממשק משתמש.

את הגרסה האחרונה של commons-math3 ו- xchart ניתן למצוא ב- Maven Central.

3. חישוב תדירות המשתנים

לצורך הדרכה זו נשתמש במערך נתונים המורכב מגיל התלמידים בבית ספר מסוים. נרצה לראות את תדירות קבוצות הגיל השונות ולראות את התפוצה שלהן בתרשים היסטוגרמה.

בואו נציג את מערך הנתונים עם a רשימה אוסף ולהשתמש בו לאכלוס מופע של תדירות מעמד:

רשימת datasetList = Arrays.asList (36, 25, 38, 46, 55, 68, 72, 55, 36, 38, 67, 45, 22, 48, 91, 46, 52, 61, 58, 55); תדר תדר = תדר חדש (); datasetList.forEach (d -> frequency.addValue (Double.parseDouble (d.toString ())));

עכשיו שאכלסנו את המופע שלנו תדירות בכיתה, אנחנו הולכים לקבל את ספירת כל גיל לפח ולסכם אותו כדי שנוכל לקבל את התדירות הכוללת של הגילאים בקבוצת גיל מסוימת:

datasetList.stream () .map (d -> Double.parseDouble (d.toString ())) .distinct (). forEach (תצפית -> {long observationFrequency = frequency.getCount (תצפית); int upperBoundary = (תצפית> classWidth) Math.multiplyExact ((int) Math.ceil (observation / classWidth), classWidth): classWidth; int lowerBoundary = (upperBoundary> classWidth)? Math.subtractExact (upperBoundary, classWidth): 0; סל מחרוזת = גבול תחתון + "- "+ upperBoundary; updateDistributionMap (LowerBoundary, bin, observationFrequency);});

מהקטע הקוד לעיל, אנו קובעים תחילה את תדירות ה- תַצְפִּית משתמש ב getCount () של ה תדירות מעמד. השיטה מחזירה את מספר ההתרחשות הכולל של ה- תַצְפִּית.

שימוש בזרם תַצְפִּית, אנו קובעים באופן דינמי את הקבוצה שהיא שייכת אליה על ידי בירור הגבולות העליונים והתחתונים שלה יחסית לרוחב הכיתה - שהוא 10.

הגבולות העליונים והתחתונים משורבבים ליצירת פח, המאוחסן לצד ה- תצפית תדירות ב distributionMap משתמש ב updateDistributionMap ().

אם ה פַּח קיים כבר אנו מעדכנים את התדר, אחרת אנו מוסיפים אותו כמפתח וקובעים את תדר הזרם תַצְפִּית כערכו. שים לב כי עקבנו אחר התצפיות המעובדות כדי למנוע כפילויות.

ה תדירות בכיתה יש גם שיטות לקביעת אחוז ואחוז מצטבר של משתנה במערך נתונים.

4. מתווה תרשים ההיסטוגרמה

כעת, לאחר שעיבדנו את מערך הנתונים הגולמי שלנו למפה של קבוצות גיל והתדרים המתאימים להם, נוכל להשתמש ב- xchart ספרייה להצגת הנתונים בתרשים היסטוגרמה:

תרשים CategoryChart = CategoryChartBuilder חדש (). רוחב (800). גובה (600) .title ("התפלגות גיל") .xAxisTitle ("קבוצת גיל") .yAxisTitle ("תדירות") .בניין (); chart.getStyler (). setLegendPosition (Styler.LegendPosition.InsideNW); chart.getStyler (). setAvailableSpaceFill (0.99); chart.getStyler (). setOverlapped (true); רשימת yData = ArrayList חדש (); yData.addAll (distributionMap.values ​​()); רשימת xData = Arrays.asList (distributionMap.keySet (). ToArray ()); chart.addSeries ("קבוצת גיל", xData, yData); SwingWrapper חדש (תרשים). DisplayChart ();

יצרנו מופע של א CategoryChart באמצעות בונה התרשימים, הגדרנו אותו ואכלסנו את הנתונים לציר ה- x ו- y.

לבסוף אנו מציגים את התרשים בממשק משתמש עם ה- SwingWrapper:

מההיסטוגרמה שלמעלה אנו יכולים לראות שאין תלמידים בגילאי 80 - 90 ואילו סטודנטים בגילאי 50 - 60 הם השולטים. ככל הנראה זה יהיה דוקטורנטים או פוסט דוקטורנטים.

אנו יכולים גם לומר שההיסטוגרמה כוללת התפלגות נורמלית.

5. מסקנה

במאמר זה בדקנו כיצד לנצל את כוחו של ה- תדירות מחלקה של אפאצ'י commons-math3 סִפְרִיָה.

ישנם שיעורים מעניינים אחרים לסטטיסטיקה, גיאומטריה, אלגוריתמים גנטיים ואחרים בספריה. את התיעוד שלו תוכלו למצוא כאן.

קוד המקור השלם זמין באתר Github.


$config[zx-auto] not found$config[zx-overlay] not found