В этом уроке мы научились:
Вычислять ортогональные многочлены. Выполнять статистические расчеты с помощью пакета Statistics. Строить гистограммы. Вычислять статистики распределений.Подпакет NormalDistribution содержит хорошо известные функции нормального распределения вероятностей и родственные им функции следующих распределений:
NormalDistribution [mu, sigma] — нормальное распределение; StudentTDistribution [r] — T-распределение Стьюдента; ChiSquareDistribution [r] — X 2 -распределение; FRatioDistribution [rl, r2] — F-распределение.Для этих и многих других непрерывных распределений заданы также функции плотности распределения, среднего значения, среднеквадратичного отклонения, стандартного отклонения, вычисления коэффициента асимметрии и т. д. Целый ряд таких функций задан и в подпакете ContinuousDistributions для ряда функций непрерывного распределения. Мы не приводим их, поскольку они подобны функциям обработки списков, описанным выше.
Рисунок 12.4 иллюстрирует получение выражения для плотности нормального распределения pdf и получение графика плотности этого распределения со смещенной вершиной.
Подпакет DiscreteDistributions содержит подобные функции для дискретного распределения вероятностей (Пуассона, биномиального, гипергеометрического и иных распределений). Таким образом, три упомянутых подпакета охватывают практически все имеющие применение законы распределения. Функции для оценки доверительных интервалов сосредоточены в подпакете Confidencelntervals.
Рис. 12.4. Пример работы с функцией нормального распределения
В подпакете HypothesisTests сосредоточено сравнительно небольшое число хорошо известных функций для выполнения тестов проверки статистических гипотез. Загрузка пакета и проведение теста на среднее значение показаны ниже:
<<Statistics` HypothesisTests`
datal = {34, 37, 44, 31, 41, 42, 38, 45, 42, 38};
MeanTest[datal, 34, KnownVariance -> 8]
QneSidedPValue -> 3.05394 x 10-9 ...
У специалистов в области статистики интерес вызовут подпакеты MultiDescriptive-Statistics и MultinormalDistribution с многочисленными функциями многомерных распределений. Они позволяют оценивать статистические характеристики объектов, описываемых функциями нескольких переменных.
Рисунок 12. 5 поясняет загрузку подпакета MultinormalDistribution, получение выражения для плотности нормального распределения по двум переменным xl и х2 и получение трехмерного графика для плотности такого распределения.
Подпакет Common используется остальными подпакетами пакет Statistics.
В подпакете NonlinearFit содержатся функции для выполнения нелинейной регрессии общего вида:
NonlinearFit[data,model,variables,parameters] — выполняет регрессию по заданной модели (формуле) model с переменными variables и параметрами parameters для заданных данных data; NonlinearRegress[data,model,variables,parameters] —выполняет регрессию по заданной модели (формуле) model с переменными variables и параметрами parameters для заданных данных data с выдачей списка диагностики.Данные могут быть представлены списком ординат {у1,у2,...} или списком {{x11,x12,..., yl}, {х21, х22,..., у2},...}. В ходе регрессии минимизируются заданные параметры, так что заданная модель регрессии приближает данные с минимальной среднеквадратичной погрешностью.
На рис. 12.7 показан пример выполнения логарифмической регрессии. При ней модель представлена выражением a*Log[b*x]. Результатом действия функции NonlinearFit является уравнение регрессии в виде этой модели с найденными значениями параметров а и Ь. Представлена также визуализация регрессии в виде графика функции-модели и исходных точек. Следует отметить, что реализация нелинейной регрессии разными методами может давать заметно различающиеся результаты, так что представленные результаты не являются абсолютно строгими.
Рис. 12.7. Пример логарифмической регрессии
Применение функции NonlinearRegress иллюстрирует следующий пример:
NonlinearRegress [data, a*Log[b*x] ,{x},{a,b}]
{BestFitParameters -> {a -> 0.665503, b -4 4. 11893},
ParameterCITable ->
Estimate Asymptotic SE CI
a 0.665503 0.0504167 {0.525524, 0.805482},
b 4.11893 0.806289 {1.88031, 6.35754}
EstimatedVariance -> 0 . 00558058,
DF SumOfSq MeanSq
Model 2 17.7425 8.87126
ANOVATable ->
Error 4 '0.0223223 0.00558058,
Uncorrected Total 6 17.7648
Corrected Total 5 0.994689
1. -0.972212 AsymptoticCorrelationMatrix ->
Curvature
Max Intrinsic 2 . 94314 x lO'16,
FitCurvatureTable -» }
Max Parameter-Effects 2.07792
Ряд функций служит для подготовки данных с целью построения гистограмм:
Frequencies [list] — готовит данные для представления частотной гистограммы; QuantileForm[list] — дает отсортированные данные для представления квантилей; CumulativeSums [list] — дает кумулятивное суммирование данных списка.Пример построения гистограммы по данным списка из двойных элементов с помощью функции Frequencies дан на рис. 12.1. Для построения графика при этом использована функция BarChart из пакета расширения Graphics.
Рис. 12.1. Пример построения гистограммы по данным функции Frequencies
Для подготовки гистограмм могут использоваться и следующие функции:
BinCounts[data,{min,max,dx}]
RangeCounts [data, {cl, c2,...} ]
CategoryCounts [data, {el, e2,...} ]
BinLists[data,{min,max,dx}]
RangeLists [data, {cl,c2,...} ]
CategoryLists [data, {el, e2,...} ]
С примерами их работы можно ознакомиться по справочной системе Mathenatica, содержащей полное описание данного подпакета.
Статистика распределений — DescriptiveStatistics
В подпакете DescriptiveStatistics сосредоточены наиболее важные функции по статистике распределений:
CentralMoment (data, r) — возвращает центральный момент данных data порядка r; Mean [data] — возвращает среднее значение данных data; MeanDeviation [data] — возвращает среднее отклонение данных; Median [data] — возвращает центральное значение (медиану) данных; MedianDeviation [data] — возвращает абсолютное отклонение (от медианы) данных; Skewness [data] — возвращает коэффициент асимметрии данных; StandardDeviation [data] — возвращает стандартное отклонение данных; GeometricMean [data] — возвращает геометрическое среднее данных; HarmonicMean [data] — возвращает гармоническое среднее данных; RootMeanSquare [data] — возвращает среднеквадратичное значение данных; Quantile [data, q] — возвращает q-й квантиль; InterpolatingQuantile [data, q] — возвращает q-й квантиль, используя при вычислениях интерполяцию данных; VarianceData [data] — возвращает среднеквадратичное отклонение данных.Мы не приводим определений этих функций, поскольку при символьных данных data их легко получить именно в том виде, который реализован в системе Mathematica:
Линейная регрессия общего вида — LinearRegression
В подпакете LinearRegression имеются расширенные функции для проведения линейной регрессии общего вида — в дополнение к включенной в ядро функции Fit. Прежде всего это функция Regress:
Regress [data, { I, х, х^2 }, х] — осуществляет регрессию данных data, используя квадратичную модель; Regress [data, {I, x1, x2, xlx2 }, {x1, x2 }] — осуществляет регрессию, используя в ходе итераций зависимость между переменными x 1 и х 2 ; Regress [data, {f 1, f2,...}, vars] — осуществляет регрессию, используя модель линейной регрессии общего вида с уравнением регрессии, представляющим линейную комбинацию функций f i от переменных vars.Данные могут быть представлены списком ординат {у1,у2,...} или списком
{{xll,xl2,...,yl}, {х21,х22,...,у2},...}.
Ниже приведены примеры использования функции Regress:
<<Statistics`LinearRegression`
data={{1,1.9},{2,2.95},{3,4.3},{4,4.8},{5,5}}
{{1, 1.9}, {2, 2.95}, {3, 4.3}, {4, 4.8}, (5, 5}}
(regress = Regress[data, {l,x, x^2}, x] Chop[regress, 10^(-6)])
[Parameter-Table->
|
Estimate |
SE |
TStat |
PValue |
1 |
0.1 |
0.421613 |
0.237185 |
0.834595 |
x |
1.89786 |
0.321297 |
5.90687 |
0.0274845' |
X 2 |
-0.182143 |
0.0525376 |
-3.4669 |
0.0740731 |
RSquared->0.988994, AdjustedRSquared ->0.977988,
EstimatedVariance -> 0.0386429, ANOVATable ->
Model |
DF 2 |
SumOfSq 6.94471 |
MeanSq 3.47236 |
FRatio 89.8577 |
PValue 0.0110062, |
Error | 2 | 0.0772857 | 0.0386429 | ||
Total |
4 |
7.022 |
func = Fit[data, {l,x,.x^2}, x]
0.1 +1.89786x-0.182143x2
Options[Regress]
{RegressionReport -> SurnmaryReport, IncludeConstant -» True, BasisNames->Automatic, Weights->Automatic, Tolerance->Automatic, ConfidenceLevel->0.95}
На рис. 12.6 показан еще один пример проведения регрессии, сопровождаемой графической визуализацией с помощью функции MultipleListPlot.
Риc. 12.6. Пример проведения регрессии с графической визуализацией
Пакет линейной регрессии содержит и ряд иных функций, с которыми можно ознакомиться с помощью справочной базы данных системы Mathematica. Напоминаем еще раз, что сама функция при линейной регрессии может быть нелинейна, она является линейной только относительно искомых коэффициентов регрессии.
В подпакете DataSmoothing определены функции для сглаживания данных, имеющих большой случайный разброс. К таким данным обычно относятся результаты ряда физических экспериментов, например по энергии элементарных частиц, или сигналы, поступающие из космоса. Для того чтобы отсеять информацию из таких данных с большим уровнем шумов и применяется процедура сглаживания. Она может быть линейной (например, усреднение по ряду точек) или нелинейной.
Определены следующие функции сглаживания:
MovingAverage [data, r] — сглаживание данных data методом усреднения для г точек; MovingMedian [data, r] — сглаживание данных data по медиане для г точек (опция RepeatedSmoothing->True используется для повторного сглаживания); LinearFilter [data, {c0, cl,..., сr-1} ] — линейная фильтрация (сj— весовые множители); ExponentialSmoothing [data, a] — экспоненциальное (нелинейное) сглаживание, параметр а задает степень сглаживания.Ниже представлены результаты сглаживания символьных данных, выявляющие соотношения, используемые при сглаживании:
ds : = {xl, х2 , хЗ , х4 , х5}
MovingAverage[ds,3]
{1/3* (xl + x2 + x3), — (х2 + хЗ + х4), — (хЗ + х4 + х5)}
MovingMedian[ds,3]
{х2, хЗ, х4}
ExponentialSmoothing[ds, 0.2]
{xl, xl + 0.2 (-xl + x2) , xl+0.2 (-xl + x2) +0.2 (-xl-0.2 (-xl + x2) + x3) , xl+0.2(-xl+x2)+0.2 (-xl-0.2 (-xl + x2) +x3) +
0.2 (-xl-0.2 (-xl+x2) - 0.2 (-xl- 0.2 (-xl + x2) + x3) + x4) , xl+0.2(-xl + x2) +0.2(-xl-0.2(-xl + x2) +x3) + 0.2 (-xl- 0.2 (-xl+x2) -0.2(-xl-0.2(-xl + x2) + x3) + x4) + 0.2 (-xl- 0.2 (-xl+x2) - 0.2 (-xl- 0.2 (-xl+x2) + x3) -
0.2 (-xl-0.2 (-xl+x2) -0.2 (-xl-0.2 (-xl + x2) + x3) + x4) + x5)}
Применение сглаживания усреднением иллюстрирует рис. 12.2. На нем задан массив (таблица) из 500 случайных точек с равномерным распределением и создан графический объект из этих точек в виде кружков малого диаметра. Затем выполнена операция сглаживания (по 12 смежным точкам) и создан графический объект сглаженных точек в виде кружков большего диаметра.
Для сопоставления оба объекта построены на одном графике функцией Show.
Статистические расчеты — пакет Statistics Построение гистограмм Статистика распределен и и Статистическая обработка данных Сглаживание данных Регрессия различного вида
В ядре системы Mathematica практически нет статистических функций. Зато пакет расширения Statistics дает сотни функций, охватывающих практически все разделы теоретической и прикладной статистики. Тем не менее, вопрос о привлечении универсальных математических систем к выполнению серьезных математических расчетов является спорным из-за существования множества специальных статистических компьютерных систем, таких как Statistica, StatGraphics и т. д.
Большинство специализированных статистических программ предлагают специальный интерфейс, базирующийся на обработке табличных данных большого объема, реализуют многовариантный расчет необходимых статистических параметров (например, регрессию сразу по десяткам формул) и отсев заведомо ошибочных данных. Поэтому при статистических расчетах применение подобных программ предпочтительно.
Учитывая ограниченный объем книги и приведенные выше обстоятельства, данный раздел не содержит исчерпывающего описания всех сотен функций расширения Statiatics, а лишь дает обзор этого пакета с описанием наиболее часто используемых средств статистики, относящихся к обработке данных. Это не слишком снижает ценность описания, поскольку функции статистики по большей части просты и имеют вполне очевидные (для специалистов) имена.
Состав пакета Statistics
Пакет расширения Statistics содержит следующие подпакеты:
Confidencelntervals — функции доверительных интервалов; ContinuousDistributions — функции непрерывных распределений; DataManipulation — манипуляции с данными; DataSmoothing — сглаживание данных; DescriptiveStatistics — статистика распределений; DiscreteDistributions — функции дискретных распределений; HypothesisTests — проверка статистических гипотез; LinearRegression — линейная регрессия; MultiDescriptiveStatistics — статистика многомерных распределений; MultinormalDistribution — функции многомерных нормальных распределений; NonlinearFit — нелинейная регрессия; NormalDistribution — функции нормального распределения; Common — данные общего характера.Как и ранее, для работы каждого из подпакетов требуется его загрузка в память компьютера с помощью команды
<<Statistics`Имя_подпакета`
Имена подпакетов расширения статистики приведены выше.
Манипуляции с данными — DataManipulation
Статистические данные обычно бывают представлены в виде списков — как одномерных, так и двумерных (таблиц и матриц) и даже многомерных. Большая часть функций, обеспечивающих манипуляции с данными, сосредоточена в подпакете DataManipulation.
Данные могут вводиться в строках ввода или считываться из файлов с помощью функции ReadList. Для манипуляций с данными могут использоваться многие функции ядра системы, описанные ранее, — в частности, все функции обработки списков. Подпакет DataManipulation дает ряд удобных функций. Ниже представлена первая группа таких функций:
Многие выражения содержат периодические тригонометрические функции, например sin(X) или cos(X). Помимо обычного спектрального представления выражений, подпакет TrigFit пакета NumericalMath имеет функции для тригонометрической регрессии:
TrigFit [data, n, x] — дает тригонометрическую регрессию для данных data с использованием косинусов и синусов вплоть до cos(n x) и sin(n x) и с периодом 2л; TrigFit [data, n, {x,L}] — дает тригонометрическую регрессию для данных data с использованием косинусов и синусов вплоть до cos(2лuc/L) и sm(2лnx/L) и с периодом I; TrigFit [data, n, {x, x0, xl} ] — дает тригонометрическую регрессию для данных data с использованием косинусов и синусов вплоть до cos(2лn(x - х 0 )/ (x-x0)) и sin(2лn(x-x 0 )/(x 1 -x 0 )) и с периодом (x1-x0).Примеры выполнения тригонометрической регрессии даны ниже:
<<Numerical Math'TrigFit'
data = Table[l+2Sin[x]+3Cos[2x],{x, 0, 2Pi-2Pi/7, 2Pi/7}];
TrigFit[data, 0, x]
1.
TrigFit[data, 1, {x, L}]
l.+ 0.Cos 2[лx/L]+ 2. Sin [2лx/L]
Fit[Transpose!{Range[0, 2Pi-2Pi/7, 2Pi/7], data}],
{1, Cos[x], Sin[x]}, x]
1. - 4.996xl(T16Cos[x] + 2. Sin[x]
TrigFit[data, 3, {x, x0, xl}];
Chop[%]
l. + 3.Cos [4л (x-x0)/(-x0+x1)]+2. Sin [2л (x-x0)/(-x0+x1)]