Статистическая информация часто используется для вывода
"обоснованных предположений" о будущем. Хотя каждому известно,
что на основе прошлого опыта не обязательно можно предсказать бу-
дущее и что каждое правило имеет исключение, все же данные о
прошлом используются для этого. Очень часто тенденции, имевшие
место в прошлом и настоящем, сохраняются и в будущем. В этих слу-
чаях вы можете определить конкретные значения для некоторого вре-
мени в будущем. Этот процесс называется прогнозированием или ана-
лизом тенденций.
Например, рассмотрим некое исследование продолжительности
жизни за десятилетний период. Пусть получены следующие данные:
Год Продолжительность жизни
1980 69
1981 70
1982 72
1983 68
1984 73
1985 71
1986 75
1987 74
1988 78
1989 77
Сначала следует понять, если здесь какая-нибудь тенденция?
Если она действительно имеется, то можно узнать какой она имеет
характер. И, наконец, если наблюдается действительно заметная
тенденция, то можно предсказать, например, среднюю продолжитель-
ность в 1995 году.
Сначала рассмотрим столбиковую диаграмму и точечный график
для этих данных, представленные на рис.26. Исследуя их, можно
сделать вывод, что средняя продолжительность жизни в целом увели-
чивается. Если приложить линейку так, чтобы наилучшим образом ли-
ния соответствовала графику, и продолжить линию до 1995 года, то
окажется, что продолжительность жизни будет в районе 82. Однако,
насколько можно быть уверенным в достоверности такого вывода?
Несмотря на интуитивное ощущение правильности такого вывода вы
можете захотеть использовать более формальные и точные методы по
прогнозированию тенденции средней продолжительности жизни.
Имея набор изменяющихся во времени данных лучше всего полу-
чать прогноз путем поиска линии наилучшего соответствия по отно-
шению к имеющимся данным. Именно это делалось с применением ли-
нейки. Линия наилучшего соответствия располагается наиболее
близко ко всем точкам и лучше всего отражает их тенденцию. Хотя
некоторые или даже все данные не будут находиться на линии, сама
линия хорошо представляет их. Достоверность линии зависит от бли-
зости точек выборки.
Линия в двумерном пространстве задается следующим основным
уравнением:
Y = a + bX,
где Y является независимой переменной, Х является зависимой пере-
менной, "а" является точкой пересечения оси Y, а "в" задает нак-
лон линии. Таким образом, для определения линии наилучшего соот-
ветствия выборки требуется определить "а" и "в".
78 ¦
. ¦ ¦ ¦
. ¦ ¦ ¦ ¦ ¦ ¦
. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
a ---------------------------------------------
0 10
Рис.26. Столбиковая диаграмма /а/ для прогноза средней про-
должительности жизни
Для определения значений этих параметров можно использовать
несколько методов, но наиболее распространенным (и как правило
наилучшим) является метод наименьших квадратов. Этот метод пост-
роен на минимизации расстояния от действительных значений данных
до линии. Этот метод состоит из двух шагов: сначала вычисляется
"в" (наклон линии) и затем вычисляется "а" (пересечение оси Y).
Вывод этой формулы выходит за рамки этой книги. Получив "в"
вы можете, используя этот параметр, вычислить "а":
Определив значения параметров "а" и "в" вы можете, задав лю-
бое значение Х, найти соответствующее значение Y. Например, ис-
пользуя приведенные выше данные по средней продолжительности жиз-
ни, можно получить следующее уравнение регрессии:
Y = 67,46 + 0,95 * X.
Следовательно, для нахождения ожидаемой продолжительности
жизни в 1995 году (15 лет от 1980 года) делаются следующие вычис-
ления:
67,46 + 0,95*15 = 82.
Однако, даже имея для данных линию наилучшего соответствия
вам может потребоваться знание действительной корреляции данных с
этой линии. Если линия и данные слабо коррелированы, то будет ма-
ло пользы от линии регрессии. Однако, если линия хорошо соответс-
твует данным, то по ней можно делать очень достоверный прогноз.
Наиболее распространенным способом определения и представления
корреляции данных и линии регрессии является вычисление коэффици-
ентов корреляции, которые могут принимать значения от нуля до
единицы. Коэффициенты корреляции по существу определяет степень
близости каждой точки к линии. Если коэффициент корреляции имеет
единичное значение, то данные хорошо соответствуют линии /т.е.
каждый элемент выборки также находится на линии регрессии/. Если
коэффициент корреляции имеет нулевое значение, то никакое значе-
ние из выборки не располагается на линии. В действтительности ко-
эффициент корреляции может принимать любое значение из диапазона
от нуля до единицы. Коэффициент корреляции вычисляется по форму-
ле, приведенной на следующей странице.
Здесь М является средним значением координаты Х и М является
средним значением координаты Y. Обычно в качестве сильной корре-
ляции рассматривается значение 0,81. В этом случае 66% данных со-
ответствует линии регрессии. Для получения процентного соотноше-
ния необходимо просто возвести в квадрат значение коэффициента
корреляции.
Ниже приводится функция "Regress". В ней используется опи-
санный выше метод поиска коэффициентов регрессии и коэффициентов
корреляции:
{ вычисление коэффициентов регрессии и вывод линии регрессии }
procedure Regress(data: DataArray; num: integer);
var
a, b, x_avg, y_avg, temp, temp2, cor: real;
data2: DataArray
t, min, max: integer;
ch: char;
begin
{ поиск среднего значения Х и У }
y_avg := 0; x_avg := 0;
for t := 1 to num do
begin
y_avg := y_avg + data[t];
x_avg := x_avg + t; { поскольку Х представляет
собой время }
end;
x_avg := x_avg/num;
y_avg := y_avg/num;
{ поиск коэффициента 'в' уравнения регрессии }
temp := 0; temp2 := 0;
for t := 1 to num do
begin
temp := temp +(data[t] - y_avg)*(t-x_avg);
temp2 := temp2 +(t - x_avg)*(t-x_avg);
end;
b := temp/temp2;
{ поиск коэффициента 'a' уравнения регрессии }
a := y_avg-(b*x_avg);
{ вычисление коэффициента корреляции }
for t := 1 to num do data2[t] := t;
cor := temp/num;
cor := cor/(StdDev(data, num)*StdDev(data2,num);
Writeln('Уравнение регресии : Y = ',
a: 15: 5, '+',b: 15: 5, '* X');
Writeln('Коэффициент корреляции : ', cor: 15:5);
Writeln('Вывести данные и линию регрессии ? (y/n)');
Readln(ch);
ch := upcase(ch);
if ch <> 'N' then
begin
{ установка режима 4 для адаптеров EGA и CGA }
GraphDriver := CGA ;
Craphmode := CGAC1 ;
InitGraph(GraphDriver, Craphmode, '');
SetColor(1);
SetLineStyle(Solid, 0, NormWidth);
{ вывод графиков }
for t := 1 to num*2 do data2[t] := a+(b*t);
{ массив регресси }
min:= getmin(data, num)*2;
max:= getmax(data, num)*2;
ScatterPlot(data, num, min, max. num*2);
ScatterPlot(data2, num*2, min, max, num*2);
ch := ReadKey;
RestoreCrtMode;
end;
end; { конец процедуры вычисления коэффициентов регрессии
и корреляции }
При проведении прогнозирования подобно описанному выше сле-
дует помнить, что по данным о прошлом не всегда можно предсказать
будущее. Однако в тех случаях, когда это можно сделать, могут по-
лучить очень интересные результаты.