Автор работы: Пользователь скрыл имя, 19 Мая 2013 в 22:18, курсовая работа
Регрессионный анализ – это эффективный метод, позволяющий обрабатывать значительные объемы информации при проведении исследований вероятностной взаимосвязи двух или больше переменных. Или другими словами, регрессионный анализ рассматривает связь между одной переменной, (зависимой), или признаком, и несколькими другими, которые называются независимыми переменными. Эта связь представляется в виде математической модели – уравнением, которое связывает зависимую переменную (у) с независимыми (х) с учетом множества соответствующих предположений.
Белорусский национальный технический университет
Факультет горного дела и инженерной экологии
КУРСОВАЯ РАБОТА
по дисциплине «Информатика»
Тема: Программа регрессионного анализа
Исполнитель:
Руководитель работы: ст. преподаватель
Минск 2013
Содержание
ВВЕДЕНИЕ
Многие объекты исследования характеризуются множеством параметров, и по результатам наблюдения за их функционированием формируются совокупности экспериментальных данных – yi(xi) . Если составить таблицу этой совокупности, то один столбец соответствует показателю, для которого необходимо установить функциональную зависимость с параметрами, представленными вторым столбцом. Для нахождения функциональной зависимости y(x) применяют регрессионный анализ.
Регрессионный анализ – это эффективный метод, позволяющий обрабатывать значительные объемы информации при проведении исследований вероятностной взаимосвязи двух или больше переменных. Или другими словами, регрессионный анализ рассматривает связь между одной переменной, (зависимой), или признаком, и несколькими другими, которые называются независимыми переменными. Эта связь представляется в виде математической модели – уравнением, которое связывает зависимую переменную (у) с независимыми (х) с учетом множества соответствующих предположений.
Настоящая работа касается вопроса автоматизации решения задач регрессионного анализа – создания программы на языке Pascal, обеспечивающей поиск функциональной зависимости между двумя переменными на основе статистических данных.
Согласно заданию необходимо разработать программу, позволяющую определять коэффициенты линейного уравнения регрессии на основе совокупности из N пар значений yi(xi).
Согласно методики проведения корреляционного анализа задача разбивается на ряд подзадач:
В основной части программы производится определение коэффициентов линейного уравнения и вывод их на экран.
Количество пар значений yi(xi) и сами значения вводятся пользователем с клавиатуры.
Задача определения коэффициентов линейного уравнения регрессии решается нахождением коэффициентов для линейного уравнения по методу наименьших квадратов.
В результате проведенного множественного эксперимента имеются данные – совокупность из N пар значений yi( xi ):
Если предположить, что между x и y существует линейная взаимосвязь, т.е.
(2.5)
то для того, чтобы найти уравнение регрессии, прежде всего, необходимо исследовать тесноту связи между случайными величинами x и y , т.е. корреляционную зависимость.
Пусть x1, x2, ..., xn – совокупность значений независимого, факторного признака; y1, y2, ..., yn – совокупность соответствующих значений зависимого, результативного признака; n количество наблюдений.
Для нахождения уравнения регрессии
вычисляются следующие величины
(2.6)
(2.7)
(2.8)
(2.9)
(2.10)
Величины дисперсии и среднего квадратичного отклонения характеризуют разброс наблюдаемых значений вокруг среднего значения. Чем больше дисперсия, тем больше разброс.
(2.11)
Корреляционный момент отражает характер взаимосвязи между x и y. Если Kx, y > 0, то взаимосвязь прямая. Если Kx, y < 0, то взаимосвязь обратная.
(2.12)
Коэффициент b находится по формуле
(2.13)
После чего можно легко найти параметр a:
(2.14)
В соответствии с поставленной задачей разрабатывается программа, имеющая нижеприведенную структуру.
Ввод совокупностей значений организован в виде цикла с параметром:
Алгоритм определения средних значений для Xi и Yi (передаваемые в процедуру параметры - N и массив Z):
Алгоритм определения величины дисперсии (передаваемые параметры Z – массив выборки, z_– среднее значение, N – размер выборки):
Алгоритм определения величины корреляционного момента (передаваемые параметры X, Y – массивы выборки, x_, y_– средние значения, N – размер выборки):
Коэффициенты a и b для уравнения регрессии:
b= Kx,y/ Dx; a`=y_-b·x_;
Соответствие обозначений
Таблица 1 – Идентификаторы
Обозначение параметров |
Смысл параметра | |
в формулах |
в программе | |
n |
N |
размер генеральной выборки |
yi( xi ) |
X,Y |
данные генеральной выборки |
|
x_,y_ |
средние значения экзогенной и эндогенной переменных |
a, b |
a, b |
коэффициенты уравнений регрессии |
Dx |
Disp |
величина дисперсии |
Kx,y |
Corl_M |
корреляционный момент |
i |
i |
индекс элементов массива, параметр циклов |
program Reg_ln;
uses Crt;
type
matr=array [1..100] of real;
var
N,i: integer;
X, Y: matr; {массивы}
mode: char;
x_, y_, a, b:real;
function st(a,b:real):real;
{функция вычисления }
begin
if a=0 then st:=0
else if a<0 then
begin
if frac(b/2)<>0 then st:=-exp(b*ln(abs(a)))
else if b=0 then st:=1
else st:=exp(b*ln(abs(a)))
end
else if b>0 then st:=exp(b*ln(a))
else if b=0 then st:=1
else st:=1/exp(b*ln(abs(a)));
end;
function Aver_mean (Z:matr; N:integer):real;
{вычисляет среднее значение совокупности}
var
i:integer;
z_:real;
begin
z_:=0;
for i:=1 to N do z_:=z_+Z[i];
Aver_mean:=z_/N;
end;
function Disp(Z:matr;z_:real;N:integer)
{вычисляет величину дисперсии}
var
i:integer;
S:real;
begin
S:=0;
for i:=1 to N do S:=S+sqr(Z[i]-z_);
Disp:=S/(N-1);
end;
function Corel_M(X, Y:matr; x_, y_:real;N:integer): real;
{вычисляет значение корреляцио
var
i:integer;
S:real;
begin
S:=0;
for i:=1 to N do S:=S+(X[i]-x_)*(Y[i]-y_);
Corel_M:=S/(N-1);
end;
{основная часть программы}
begin
TextBackground(7);
TextColor(0);
ClrScr;
Writeln('Программа вычисления коэффициентов уравнения регрессии');
Writeln;
Writeln('Исходные данные:');
Write('Введите объем выборки (N): ');
Read(N);
Writeln('Введите
значения элементов
for i:=1 to N do
begin
Write('X[',i,']=');
Read(X[i]);
GotoXY(WhereX+12, WhereY-1);
Write('Y[',i,']=');
Read(Y[i]);
end;
{средние значения}
x_:=Aver_Mean(X,N);
y_:=Aver_Mean(Y,N);
{коэффициенты}
b:=Corel_M(X,Y,x_,y_,N)/Disp(
a:=y_-b*x_;
Writeln('a=',a:7:5,'; ','b=',b:7:5);
Writeln('уравнение регрессии: y=',a:7:5,'+',b:7:5,'*x)');
Writeln;
Writeln;
Writeln('Для
завершения нажмите любую
readkey;
end.
Исходные данные и результат выполнения программы представлены на рисунке 1 .
Рисунок 1 – Введенные данные и полученные результаты
Для анализа правильности полученных результатов можно произвести вычисления коэффициентов регрессии средствами Excel, которые приведены на рисунке 2.
x |
1 |
2 |
3 |
4 |
5 |
7 |
y |
2 |
3 |
4 |
5 |
6 |
8 |
Рисунок 2 – Результат пересчета в ЭТ
Рисунок 3 - Формулы задействованные в Excel для вычисления у
Рисунок 4 – График, полученный в результате вычислений значения у по полученной формуле (уравнению линейной регрессии)
Полученные уравнения
Инструкция по работе с программой
Исходный текст программы содержится в файле pravreg.pas. Исполняемым файлом является pravreg..exe, после запуска которого, на экране дисплея появляется сообщение согласно рисунку 1.
Пользователю необходимо ввести исходные данные – размера выборки и значения ее элементов (рисунок 1).
После завершения ввода программа вычисляет коэффициенты регрессии и выводит их на экран . После этого программа будет ожидать нажатия любой клавиши.
Завершение работы программы происходит после нажатия клавиши.
ЗАКЛЮЧЕНИЕ
Созданная в курсовой работе программа позволяет рассчитывать коэффициенты регрессии для линейного уравнения. Способ нахождения коэффициентов регрессионной указанной зависимости сводится к процедуре отыскания коэффициентов линейной зависимости.
Проверка правильности результатов
произведена путем сопоставлени
В контрольной работе так же приведены математическая модель задачи, алгоритм и блок-схема алгоритма решения, результаты расчета.