НОУ ІНТУЇТ | лекція | Моделювання з Maxima
- 6.2 Статистичні методи аналізу даних 6.2.1 Введення-виведення матричних даних
- 6.2.2 Функції Maxima для розрахунку описової статистики
6.2 Статистичні методи аналізу даних 6.2.1 Введення-виведення матричних даних
Для читання і запису матричних або потокових даних в складі Maxima передбачений пакет numericalio.
Функції пакета розраховані на введення / виведення даних, кожне поле яких передбачається атомом (в сенсі Lisp), тобто цілих чисел, чисел з плаваючою точкою, рядків або символів. Атоми сприймаються numericalio так само, як при інтерактивному введенні в консолі або виконанні batch-файла. Можливе використання різних символів-сепараторів для поділу полів даних (параметр ).
Основні функції пакета numericalio:
Поряд із зазначеними простими функціями, використовуються більш специфічні: , Призначені для зчитування масивів в форматі Lisp або Maxima, особливості застосування яких не розглядаються в даній книзі.
6.2.2 Функції Maxima для розрахунку описової статистики
Система Maxima містить ряд функцій для виконання статистичних розрахунків (описової статистики), об'єднані в пакет descriptive. Функції, що входять до складу descriptive, дозволяють виконати розрахунок дисперсії, середньоквадратичного відхилення, медіани, моди і т.п. Назви функцій та короткий опис виконуваних ними дій наведені в табл. 6.1 .
Побудова графічних ілюстрацій проводиться за допомогою функцій (Безпосередня візуалізація даних), (Будує гістограму), (Також будує гістограму, але по дискретним або нечислове даними), (Графік Бокса- вискер), (кругова діаграма). Сінтакісіс виклику і параметри функцій багато в чому аналогічні компонентам пакету draw (див. Приклади нижче).
Основні загальні опції (успадковані від draw):
- terminal - пристрій, на який виводиться діаграма (можливі значення - eps і png, за замовчуванням діаграма виводиться на екран, інші варіанти);
- file_name - ім'я файлу, в який виводити гістограму (розширення встановлюється по опції terminal)
- title - основний заготовок;
- xlabel, ylabel - назви (мітки) осей,
Розглянемо приклад використання функцій пакета descriptive для статистичної обробки масивів даних. Дані беремо з файлів, що входять до складу пакета descriptive (файли biomed.data, wind.data і ін.). Перед початком роботи завантажуємо необхідні пакети descriptive і numericalio. За допомогою функції зчитується матриця, що містить 100 рядків і 5 стовпців.
(% I1) load (descriptive) $ load (numericalio) $ s: read_matrix (file_search ( "wind.data")) $ length (s); (% O4) 100 (% i5) mean (s); / * Розраховуємо середнє значення. При обробці матриці отримуємо список середніх по стовпцях. * / (% I11) mini (%); / * При обробці списку і пошуку в ньому мінімального елемента отримуємо одне значення! * /
Для побудови діаграм розкиду ( -діаграмм) призначена функція . Синтаксис виклику:
Дані для функції можуть представлятися вектором (списком) або матрицею. Одномірні масиви розглядаються як тимчасові ряди з рівновіддаленими точками.
Основні опції, специфічні для даної функції:
- point_size - розмір точки на графіку (ціле позитивне число);
- point_type - вид точки (відсутність точок - none (-1), dot (0), plus (1), multiply (2), asterisk (3), square (4), filled_square (5), circle (6), filled_circle (7), up_triangle (8), filled_up_triangle (9), down_triangle (10), filled_down_triangle (11), diamant (12), filled_diamant (13));
- color - колір точки (той же набір кольорів, що і в пакеті draw);
- grid - наявність сітки на графіку ( ).
Для побудови гістограм використовується функція (Синтаксис виклику аналогічний і основні опції ідентичні опцій ). Розглянемо додаткові опції, специфічні для :
- nclasses (за замовчуванням 10) - число класів гістограми, або список із зазначенням меж класів і їх число, або тільки межі;
- frequency - вказує масштаб шкали ординат, можливі значення: абсолютний, відносний і процентний (default, absolute, persent);
- htics (default, auto) - формат проміжних поділок на гістограмі, можливі значення - auto, endpoints, intervals, або список міток;
При побудові гістограми доступні також локальні і глобальні опції пакета draw.
Для графічного представлення описової статистики служить діаграма Боксу-Уіскера ( "ящик-з-вусами"), яка є зручним способом наочно уявити статистичні дані п'ятьма параметрами: найменше та найбільше значення вибірки, нижній, середній і верхній квартили. На даній діаграмі можуть бути показані і викиди (якщо вони є).
Для побудови діаграм Боксу-Уіскера використовується функція . Синтаксис виклику: або .
параметр - список або матриця з декількома стовпцями. Опції функції ідентичні опцій .
Стовпчасті діаграми (зазвичай частотні) будуються для даних, розбитих на категорії, за допомогою функції . Ці діаграми дозволяють графічно відобразити відмінності між даними категорій.
Досить поширеним способом графічного зображення структури статистичних сукупностей є секторна діаграма, так як ідея цілого дуже наочно виражається кругом, який представляє всю сукупність. Відносна величина кожного значення зображується у вигляді сектора кола, площа якого відповідає внеску цього значення в суму значень. Цей вид графіків будується в Maxima функцією .
Розглянемо приклади використання графічних утиліт пакета descriptive.
Для подальшого використання зчитуємо дані з файлу wind.data (це тестовий файл в складі пакету descriptive, містить матрицю 100х5).
(% I1) load (descriptive) $ load (numericalio) $ s: read_matrix (file_search ( "wind.data")) $ (% i4) x: makelist (s [k] [1], k, 1, length ( s)) $ (% i5) y: makelist (s [k] [2], k, 1, length (s)) $ (% i6) m: makelist ([x [k], y [k]], k, 1,100) $ (% i7) xy: apply ( 'matrix, m) $
Мал. 6.1. точковий графік
Будуємо графік (точковий) залежно від (Див. рис.6.1 ). Результати зберігаються в файлі maxima_out.eps (ім'я файлу - за замовчуванням, він створюється в домашньому каталозі користувача). Необхідні команди:
(% I8) scatterplot (xy, terminal = eps);
Зчитуючи дані з файлу pidigits.data, будуємо гістограму частотного розподілу десяткових знаків числа π (див. рис.6.2 ). Результати зберігаються в файлі histogram.eps (ім'я файлу задається опцією file_name = "histogram", він створюється в домашньому каталозі користувача). Необхідні команди:
load (descriptive) $ s1: read_list (file_search ( "pidigits.data")) $ histogram (s1, nclasses = 8, title = "pi digits", xlabel = "digits", ylabel = "Absolute frequency", fill_color = grey , fill_density = 0.6, terminal = eps, file_name = "histogram") $
Наступний приклад - графік Боксу-Уіскера з анотаціями по осях (див. рис.6.3 ). Необхідні команди (результат зберігається в файлі boxwisker.eps, англомовні найменування замінені на російські переклади):
(% I10) boxplot (s, title = "Test plot", xlabel = "Seasons", terminal = eps, file_name = "boxwisker") $
Мал. 6.2. Гістограма
Приклад побудови стовпчастий діаграми з використанням функції - на рис.6.4 . Графік побудований командою (результат зберігається в файл barsplot.eps):
load (descriptive) $ l1: makelist (random (8), k, 1,50) $ l2: makelist (random (8), k, 1,100) $ barsplot (l1, l2, box_width = 1/2, fill_density = 3 / 4, sample_keys = [ "A", "B"], bars_colors = [grey10, grey50], terminal = eps, file_name = "barsplot") $
Основні опції команди :
Мал.6.3.
Графік Боксу-Уіскера
З функцією можна використовувати і опції пакета draw.
Для побудови кругових (секторних) діаграм використовується функція .
приклад використання :
load (descriptive) $ s1: read_list (file_search ( "pidigits.data")) $ piechart (s1, xrange = [- 1.1, 1.3], yrange = [- 1.1, 1.1], title = "Digit frequencies in pi") $
Кольори секторів і радіус діаграми описуються опціями sector_colors і pie_radius.
Мал.6.4.
Гістограма розподілу в групах
На жаль, базова програма виведення графіки Maxima - gnuplot - написана дуже давно, і сприймає кириличні символи тільки в кодуваннях KOI8-R або KOI8-U (в останніх версіях - і utf8). Можливим рішенням (прийнятим для побудови графіків в цій книзі) є створення файлу .gnuplot, що містить наступні команди: set encoding koi8r або set encoding utf8.
Однак і в цьому випадку може виникнути необхідність у редагуванні файлу maxout.gnuplot, що містить команди для побудови останнього графіка.