Особенности применения регрессионного анализа
Изучение теоретических вопросов использования систем программирования. Расчет регрессионных зависимостей с помощью табличного процессора MS Excel. Вычисление среднего значения, дисперсии, коэффициента парной корреляции, среднеквадратических отклонений.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 19.09.2013 |
Размер файла | 1,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ВВЕДЕНИЕ
Регрессионный анализ -- метод моделирования измеряемых данных и исследования их свойств. Данные состоят из пар значений зависимой переменной (иначе называют регрессорами или предикторами) и независимой переменной (критериальной). Регрессионная модель есть функция независимой переменной и параметров с добавленной случайной переменной. Параметры модели настраиваются таким образом, что модель наилучшим образом приближает данные. Критерием качества приближения (целевой функцией) обычно является среднеквадратичная ошибка: сумма квадратов разности значений модели и зависимой переменной для всех значений независимой переменной в качестве аргумента.
Цели регрессионного анализа:
-определение степени детерминированности вариации критериальной (зависимой) переменной предикторами (независимыми переменными);
-предсказание значения зависимой переменной с помощью независимой;
-определение вклада отдельных независимых переменных в вариацию зависимой. Регрессионный анализ служит для определения вида связи между двумя переменными и дает возможность для прогнозирования значения одной (зависимой) переменной отталкиваясь от значения другой (независимой) переменной.
Регрессионный анализ нельзя использовать для определения наличия связи между переменными, поскольку наличие такой связи и есть предпосылка для применения анализа.
В ходе регрессионного анализа решаются две основные задачи:
-построение уравнения регрессии, т.е. нахождение вида зависимости между результатным показателем и независимыми факторами x1, x2, ..., xn;
-оценка значимости полученного уравнения, т.е. определение того, насколько выбранные факторные признаки объясняют вариацию признака y.
При оценке модели рассчитывают показатели силы и тесноты связи. Для этого используют следующие показатели вариации результативного признака:
-факторная дисперсия, характеризующаяся вариацию результативного признака, объясняемую только признаком фактором;
-остаточная дисперсия, объясняющаяся влиянием прочих факторов на результативный признак;
-общая дисперсия, складывающаяся за счет влияния всех факторов;
-коэффициент детерминации -- отношение факторной дисперсии к общей, показывающий, какая часть общей вариации результативного признака объясняется признаком фактором.
Регрессия -- зависимость математического ожидания (например, среднего значения) случайной величины от одной или нескольких других случайных величин (свободных переменных). Регрессионным анализом называется поиск такой функции, которая описывает эту зависимость. Регрессия может быть представлена в виде суммы не случайной и случайной составляющих.
Регрессионные зависимости бывают однофакторные (парные) и многофакторные. Парная регрессия при парной зависимости может быть аппроксимирована прямой линией, параболой, гиперболой, логарифмической, степенной или показательной функцией, полиномом и др. Двухфакторное поле можно аппроксимировать плоскостью, параболоидом второго порядка, гиперболоидом.
Применяется регрессионный анализ главным образом для планирования, а также для разработки нормативной базы.
В реальной жизни строгое соответствие требованиям регрессионного анализа встречается очень редко, однако этот метод весьма распространен в экономических исследованиях.
Целью курсовой работы является получение навыков по алгоритмизации и программированию.
В процессе выполнения работы решаются следующие задачи:
-разработка алгоритма вычисления статистических характеристик по заданным формулам;
-запись алгоритма в виде блок-схемы и программы на языке Си;
-подготовка данных для отладки программы средствами табличного процессора MSExcel;
-изучение теоретических вопросов использования системы программирования.
1. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
1.1 Функции ввода-вывода строк и символов языка С
В языке Си нет встроенных средств ввода/вывода данных. Ввод/вывод информации осуществляется с помощью библиотечных функций и объектов.
Декларации функций ввода/вывода, как уже упоминалось, приведены в заголовочном файле stdio.h.
Для вывода информации на экран монитора (дисплей) в языке Си чаще всего используются функции: printf() и puts().
Формат функции форматного вывода на экран:
printf( управляющая строка , список объектов вывода);
В управляющей строке, заключенной в кавычки, записывают: поясняющий текст, который выводится на экран без изменения (комментарии), список модификаторов форматов, указывающих компилятору способ вывода объектов (признак модификатора формата - символ %) и специальные символы, управляющие выводом (признак - символ \).
В списке объектов вывода указываются идентификаторы печатаемых объектов, разделенных запятыми: переменные, константы или выражения, вычисляемые перед выводом.
Количество и порядок следования форматов должен совпадать с количеством и порядком следования выводимых на экран объектов.
Функция printf выполняет вывод данных в соответствии с указанными форматами, поэтому формат может использоваться и для преобразования типов выводимых объектов.
Для чисел long добавляется символ l, например, %ld - длинное целое, %lf - число вещественное с удвоенной точностью - double.
Если нужно напечатать сам символ %, то его нужно указать 2 раза:
printf ("Только %d%% предприятий не работало. \n",5);
Получим: Только 5% предприятий не работало.
Управляют выводом специальные последовательности символов: \n - новая строка; \t - горизонтальная табуляция; \b - шаг назад; \r - возврат каретки; \v - вертикальная табуляция; \\ - обратная косая; \' - апостроф; \" - кавычки; \0 - нулевой символ (пусто).
Пример:
#define PI 3.14159
int number = 5;
float bat = 255;
int cost = 11000;
printf(" %d студентов съели %f бутербродов. \n", number, but);
printf(" Значение числа pi равно %f. \n", pi);
printf(" Стоимость этой вещи %d %s. \n", cost, "Руб.");
В модификаторах формата функции printf после символа % можно указывать число, задающее минимальную ширину поля вывода, например, %5d - для целых, %4.2f - для вещественных - две цифры после запятой для поля шириной 4 символа. Если указанных позиций для вывода целой части числа не хватает, то происходит автоматическое расширение.
Если после «%» указан знак «минус», то выводимое значение будет печататься с левой позиции поля вывода, заданной ширины, например: % - 10d.
Использование функции printf для преобразования данных:
1) printf("%d", 336.65); получим: 336;
2) printf("%o", 336);получим: 520, т.е. 5*8**2+2*8+0*1 = 336;
3) printf("%x", 336); получим: 150 (шестнадцатеричное).
Можно использовать функцию printf для нахождения кода ASCII некоторого символа:
printf (" %c - %d\n", 'a', 'a');
получим десятичный код ASCII символа а: a - 65 .
Функция puts(ID строки); выводит на экран дисплея строку символов, автоматически добавляя к ней символ перехода на начало новой строки (\n).
Аналогом такой функции будет: printf(“%s \n”, ID строки);
Функция putchar() выдает на экран дисплея один символ без добавления символа `\n'.
1.2 Функции ввода информации
Функция, предназначенная для форматированного ввода исходной информации с клавиатуры:
scanf (управляющая строка , список адресов объектов ввода);
в управляющей строке указываются только модификаторы форматов, количество и порядок следования которых должны совпадать с количеством и порядком следования вводимых объектов, а тип данных будет преобразовываться в соответствии с модификаторами.
Список объектов ввода представляет собой адреса переменных, разделенные запятыми, т.е. для ввода значения переменной перед ее идентификатором указывается символ &, обозначающий операцию «взять адрес». Если нужно ввести значение строковой переменной, то использовать символ & не нужно, т.к. строка - это массив символов, а ID массива является адресом его первого элемента. Например:
int course;
double grant;
char name[20];
printf (" Укажите курс, стипендию, имя \n ");
scanf ("%d %lf %s", &course, &grant, name);
Вводить данные с клавиатуры можно как в одной строке через пробелы, так и в форме разных строк, нажимая после ввода текущего объекта клавишу Enter.
Функция scanf() использует практически тот же набор модификаторов форматов, что и printf(); отличия от функции вывода следующие: отсутствует формат %g, форматы %e,%f - эквивалентны. Для ввода коротких целых чисел введен модификатор формата %h.
Внимание. Функцией scanf() по формату %s строка вводится только до первого пробела. Для ввода фраз, состоящих из слов, разделенных пробелами, используется функция gets (ID строковой переменной);
Символы вводятся при помощи функции getch(). Причем простой ее вызов организует паузу, при которой система программирования приостановит выполнение программы и будет ждать нажатия любой клавиши. Так поступают в том случае, когда нужно просмотреть какие-то результаты работы, при выводе их на экран монитора.
Если же использовать ее в правой части операции присваивания, например:
char c;
c = getch();
то символьная переменная с получит значение кода нажатой клавиши.
С началом работы любой программы автоматически открываются стандартные потоки для ввода (stdin) и вывода данных (stdout), которые по умолчанию связаны с клавиатурой и экраном монитора соответственно.
Ввод данных функциями gets(), getch() выполняется с использованием потока stdin. Если указанная функция не выполняет своих действий (проскакивает), перед использованием необходимо очистить поток (буфер) ввода с помощью функции fflush(stdin);
2. ПОСТАНОВКА ЗАДАЧИ И ИСХОДНЫЕ ДАННЫЕ
Исходными данными задачи являются:
1) набор значений фактора и набор значений результата , указанных в таблице 1.1 , где n - количество значений;
2) две функции и , которые будут использоваться как регрессионные зависимости;
3) указываются формулы, с помощью которых можно рассчитать значения параметров и таких, что зависимость наилучшим образом приближает исходные наборы фактора и результата , а также указываются аналогичные формулы для расчета параметров и ;
4) название функциональности системы программирования, описание которой требуется найти в литературе.
На основе указанных исходных данных требуется разработать алгоритм и представить его в виде блок-схемы и программы на языке Си, который для заданных наборов фактора и результата (таблица 1.1) рассчитывает следующие статистические характеристики:
1. средние значения этих наборов
, ;
2. дисперсии
, ;
3. среднеквадратические отклонения:
, ;
4. коэффициент парной корреляции:
;
В алгоритме должен быть предусмотрен анализ вычисленного значения парной корреляции r: если , то считают, что между фактором и результатом отсутствует функциональная зависимость, а при считают, что функциональная зависимость существует;
5. далее в алгоритме следует предусмотреть вычисление характеристик регрессионных зависимостей и . Для этого надо вычислить значения параметров , , и по формулам, указанным в задании (указанные формулы выведены из условия минимальности суммы квадратов отклонений значений и от в точках ). Все регрессионные зависимости имеют вид: . При этом, значения коэффициентов и вычисляются по следующим формулам:
6. вычислить значения результата по регрессионным зависимостям:
, ;
7. вычислить остаточные дисперсии:
, ;
8. вычислить коэффициенты Фишера, характеризующие качество приближений функций и к заданному результату :
, ;
9. в заключение алгоритм должен сравнить полученные значения и - лучшей регрессионной зависимостью является та, для которой коэффициент Фишера имеет большее значение;
В таблице 1.1 представлены факторы и результаты
Таблица 1.1 - Таблица факторов и результатов
Наименование райпо |
Амортизация основных средств торговли, млн. р. |
Валовые доходы от торговли, млн. р. |
|
Ляховичское |
73 |
1797 |
|
Жабинковское |
84 |
1523 |
|
Барановичское |
98 |
2526 |
|
Брестское |
98 |
2273 |
|
Ганцевичское |
103 |
2097 |
|
Малоритское |
130 |
1992 |
|
Каменецкое |
147 |
2875 |
|
Кобринское |
148 |
2115 |
|
Ивановское |
175 |
3484 |
|
Березовское |
176 |
4549 |
|
Дрогичинское |
180 |
3579 |
|
Лунинецкое |
221 |
6821 |
|
Пинское |
227 |
4349 |
|
Пружанское |
252 |
4854 |
|
Ивацевичское |
260 |
6139 |
|
Столинское |
286 |
8065 |
Формула для расчета первой регрессионной зависимости:
Формула для расчета второй регрессионной зависимости:
Формула для расчета по первой регрессии:
Формула для расчетапо первой регрессии:
Где , n - количество факторов
Формула для расчета по второй регрессии:
Формула для расчетапо второй регрессии:
Где , n - количество факторов
3. Графическая схема алгоритма решения задачи
Рисунок 3.1 - Обобщенная схема алгоритма решения задачи
3.1 Вычисление среднего значения, дисперсии, среднеквадратических отклонений х и у (блок AB)
программирование регрессионный зависимость корреляция
Для вычисления среднего значения, дисперсии, среднеквадратических отклонений фактических массивов x и y нужно два раза обратиться к алгоритму с разными параметрами. Схема алгоритма блока АВ представлена на рисунке 3.2 :
Рисунок 3.2 - Вычисление среднего значения, дисперсии, среднеквадратических отклонений х и у (детализация блока AB)
3.2 Вычисление коэффициента парной корреляции (блок СD):
Графическая схема алгоритма вычисления коэффициента парной корреляции представлена на рисунке 3.3 :
Рисунок 3.3 - Вычисление коэффицента парной кораляции ( детализация блока СD )
Полученный результат программа по модулю сравнивает с числом 0.5. Если то считают, что между фактором и результатом отсутствует функциональная зависимость. Осуществляется выход из программы. При считают, что функциональная зависимость существует. Выполнение программы продолжается.
3.3 Вычисление регрессии для первой и второй функции (блок EF)
Для вычисления результатов по регрессионным зависимостям, нужно вычислить коэффициенты a0 и a1 для двух регрессионных зависимостей по следующему алгоритму представленном на рисунке 3.4 :
Рисунок 3.4 - Вычисления коэффициентов a0 и a1 для регрессионных зависимостей (детализация блока EF)
В качестве параметра fi в алгоритме на рисунке(3.4) будут передаваться функции Func1 и Func2. Схема функций представлена на рисунке 3.5:
Рисунок 3.5 - Функции Func1 и Func2
3.4 Вычисление остаточных дисперсий (блок GI)
Для вычисления остаточных дисперсий нам нужно два раза обратиться к алгоритму с разными параметрами. Схема алгоритма блока GI будет иметь вид (рисунок 3.6):
Рисунок 3.6 - Вычисление остаточных дисперсий (детализация блока GI)
4. Расчет параметров регрессионных зависимостей с помощью надстройки Пакет анализа MS Excel
4.1 Расчет параметров регрессионных зависимостей
В таблице 4.1.1 отображены исходные данные: факторы и результаты. Таблицы 4.1.2 и 4.1.3 содержат значения X и Y для первой и второй регрессий. В таблице 4.1.4 находятся значения a0 и a1 для первой и второй регрессий. Таблицы 4.1.5 и 4.1.6 содержат значения регрессионная статистика и дисперсионного анализа по первой регрессии, 4.1.7 и 4.1.8 - по второй регрессии соответственно.
Таблица 4.1.1 - Факторы и результаты
Наименование райпо |
Амортизация основных средств торговли, млн. р. |
Валовые доходы от торговли, млн. р. |
|
Ляховичское |
73 |
1797 |
|
Жабинковское |
84 |
1523 |
|
Барановичское |
98 |
2526 |
|
Брестское |
98 |
2273 |
|
Ганцевичское |
103 |
2097 |
|
Малоритское |
130 |
1992 |
|
Каменецкое |
147 |
2875 |
|
Кобринское |
148 |
2115 |
|
Ивановское |
175 |
3484 |
|
Березовское |
176 |
4549 |
|
Дрогичинское |
180 |
3579 |
|
Лунинецкое |
221 |
6821 |
|
Пинское |
227 |
4349 |
|
Пружанское |
252 |
4854 |
|
Ивацевичское |
260 |
6139 |
|
Столинское |
286 |
8065 |
Таблица 4.1.2 - Значения функции от X для первой регрессии, значения Y для первой регрессии (записанные в формульном виде)
=B2^(1/2)*LN(B2^(1/2)) |
=$D$20+$D$21*D2 |
|
=B3^(1/2)*LN(B3^(1/2)) |
=$D$20+$D$21*D3 |
|
=B4^(1/2)*LN(B4^(1/2)) |
=$D$20+$D$21*D4 |
|
=B5^(1/2)*LN(B5^(1/2)) |
=$D$20+$D$21*D5 |
|
=B6^(1/2)*LN(B6^(1/2)) |
=$D$20+$D$21*D6 |
|
=B7^(1/2)*LN(B7^(1/2)) |
=$D$20+$D$21*D7 |
|
=B8^(1/2)*LN(B8^(1/2)) |
=$D$20+$D$21*D8 |
|
=B9^(1/2)*LN(B9^(1/2)) |
=$D$20+$D$21*D9 |
|
=B10^(1/2)*LN(B10^(1/2)) |
=$D$20+$D$21*D10 |
|
=B11^(1/2)*LN(B11^(1/2)) |
=$D$20+$D$21*D11 |
|
=B12^(1/2)*LN(B12^(1/2)) |
=$D$20+$D$21*D12 |
|
=B13^(1/2)*LN(B13^(1/2)) |
=$D$20+$D$21*D13 |
|
=B14^(1/2)*LN(B14^(1/2)) |
=$D$20+$D$21*D14 |
|
=B15^(1/2)*LN(B15^(1/2)) |
=$D$20+$D$21*D15 |
|
=B16^(1/2)*LN(B16^(1/2)) |
=$D$20+$D$21*D16 |
|
=B17^(1/2)*LN(B17^(1/2)) |
=$D$20+$D$21*D17 |
Таблица 4.1.3 - Значения функции от X для второй регрессии, значения Y для второй регрессии
|
||
5256,497725 |
1685,139127 |
|
6972,498022 |
1815,221549 |
|
9506,498304 |
2007,312946 |
|
9506,498304 |
2007,312946 |
|
10506,49839 |
2083,118546 |
|
16770,49872 |
2557,964813 |
|
21462,49887 |
2913,644672 |
|
21756,49888 |
2935,931517 |
|
30450,49905 |
3594,985365 |
|
30800,49905 |
3621,517324 |
|
32220,49908 |
3729,161269 |
|
48620,49925 |
4972,373025 |
|
51302,49927 |
5175,68363 |
|
63252,49934 |
6081,560485 |
|
67340,49936 |
6391,453756 |
|
81510,49942 |
7465,619028 |
Таблица 4.1.10 - Значения функции от X для второй регрессии, значения Y для второй регрессии(записанные в формульном виде)
=B2*B2/EXP(1/B2) |
=$F$20+$F$21*F2 |
|
=B3*B3/EXP(1/B3) |
=$F$20+$F$21*F3 |
|
=B4*B4/EXP(1/B4) |
=$F$20+$F$21*F4 |
|
=B5*B5/EXP(1/B5) |
=$F$20+$F$21*F5 |
|
=B6*B6/EXP(1/B6) |
=$F$20+$F$21*F6 |
|
=B7*B7/EXP(1/B7) |
=$F$20+$F$21*F7 |
|
=B8*B8/EXP(1/B8) |
=$F$20+$F$21*F8 |
|
=B9*B9/EXP(1/B9) |
=$F$20+$F$21*F9 |
|
=B10*B10/EXP(1/B10) |
=$F$20+$F$21*F10 |
|
=B11*B11/EXP(1/B11) |
=$F$20+$F$21*F11 |
|
=B12*B12/EXP(1/B12) |
=$F$20+$F$21*F12 |
|
=B13*B13/EXP(1/B13) |
=$F$20+$F$21*F13 |
|
=B14*B14/EXP(1/B14) |
=$F$20+$F$21*F14 |
|
=B15*B15/EXP(1/B15) |
=$F$20+$F$21*F15 |
|
=B16*B16/EXP(1/B16) |
=$F$20+$F$21*F16 |
|
=B17*B17/EXP(1/B17) |
=$F$20+$F$21*F17 |
Таблица 4.1.4 - Значения a0 и a1 для первой и второй регрессий
первая регрессия |
вторая регрессия |
||
a0 |
-2397,172788 |
1286,667194 |
|
a1 |
188,4635392 |
0,075805594 |
Таблица 4.1.5 - Регрессионная статистика по первой регрессии
Регрессионная статистика |
||
Множественный R |
0,897807 |
|
R-квадрат |
0,806057 |
|
Нормированный R-квадрат |
0,792204 |
|
Стандартная ошибка |
894,2883 |
|
Наблюдения |
16 |
Таблица 4.1.6 - Дисперсионный анализ по первой регрессии
Дисперсионный анализ |
|||||||
df |
SS |
MS |
F |
Значимость F |
|||
Регрессия |
1 |
46534505 |
46534505 |
58,1862 |
2,37E-06 |
||
Остаток |
14 |
11196523 |
799751,6 |
||||
Итого |
15 |
57731028 |
|||||
Коэф. |
Станд. ошибка |
t-статистика |
P-Значение |
Нижние 95% |
Верхние 95% |
||
Y-пересечение |
-2397,17 |
828,7161 |
-2,89263 |
0,011813 |
-4174,59 |
-619,753 |
|
Переменная X 1 |
188,4635 |
24,70685 |
7,627988 |
2,37E-06 |
135,4726 |
241,4545 |
Таблица 4.1.7 - Регрессионная статистика по второй регрессии
Множественный R |
0,9247719 |
|
R-квадрат |
0,85520306 |
|
Нормированный R-квадрат |
0,84486042 |
|
Стандартная ошибка |
772,716727 |
|
Наблюдения |
16 |
Таблица 4.1.8 - Дисперсионный анализ по второй регрессии
Дисперсионный анализ |
|||||||
df |
SS |
MS |
F |
Значимость F |
|||
Регрессия |
1 |
49371752 |
49371752 |
82,68713 |
2,99E-07 |
||
Остаток |
14 |
8359276 |
597091,1 |
||||
Итого |
15 |
57731028 |
|||||
Коэффициенты |
Стандартная ошибка |
t-статистика |
P-Значение |
Нижние 95% |
Верхние 95% |
||
Y-пересечение |
1286,66719 |
327,3602 |
3,930432 |
0,001509 |
584,5494 |
1988,785 |
|
Переменная X 1 |
0,07580559 |
0,008336 |
9,093246 |
2,99E-07 |
0,057926 |
0,093686 |
4.2 График с исходными данными и регрессионными зависимостями
График 4.2.1 представляет собой график зависимости валовые доходы от торговли, первой и второй регрессий от амортизация основных средств торговли (в миллионах рублей).
График 4.2.1 - График с исходными данными и регрессионными зависимостями
5. Описание функционирования программного комплекса
Для работы программы необходимо положить в одну папку с исполняемым файлом текстовый документ с расширением txt, содержащий исходные данные. Выполнив программу на экране появится информация о работе. Для продолжения нужно нажать любую клавишу. Во втором пункте находятся задачи. Для продолжения нужно нажать любую клавишу. Далее нужно указать имя файла с разрешением. В случае отсутствия файла с введенным именем будет выдана ошибка (рисунок 5.3). Если такой файл существует, то вам нужно выбрать вы хотите вывести на экран результат выполнения программы или записать результаты в отдельный файл(рисунок 5.4).Далее выводится таблица входных данных из трех столбцов: названия райпо, факторы X, результаты Y(рисунок 5.5). Далее будет выведены средние значение фактора и результата, дисперсия по X иY, среднеквадратичное отклонение Y, коэффициент парной корреляции, коэффициенты a0 и a1 для первой и второй регрессии (рисунок 5.6). В случае, если коэффициент парной корреляции меньше чем 0.5, будет выведено сообщение о слабой связи. Если же коэффициент парной корреляции больше 0.5, то будет выведена таблица результатов из пяти столбцов: названия райпо, факторы X, результаты Y, значения Y по первой регрессии, значения Y по второй регрессии (рисунок 5.7). После этого будут выведены результаты: остаточные дисперсии по Y, коэффициенты Фишера для первой и второй регрессий, и вывод о том, какая регрессия более полно отражает результаты (рисунок 5.8).
Рисунок 5.1 - Информация о работе
Рисунок 5.2 - Задачи
Рисунок 5.3 - Ошибка открытия файла
Рисунок 5.4 - Меню выбора действия с файлом
Рисунок 5.5 - Таблица факторов и результатов
Рисунок 5.6 - Вывод средних значений факторов и результатов, дисперсии и среднеквадратического отклонения по X и Y, коэффициента парной корреляции, коэффициенты a0 и a1 для первой и второй регрессии
Рисунок 5.7 - Таблица выходных результатов работы программы (значений Y по первой и второй регрессиям)
Рисунок 5.8 - Вывод результатов(остаточные дисперсии, коэффициенты Фишера, вывод о большем соответствии первой или второй регрессии исходным результатам)
ЗАКЛЮЧЕНИЕ
В результате проведения данной работы было установлено, что исходные данные обладают высоким качеством приближения к обеим регрессионным зависимостям. Однако, среди данных регрессионных зависимостей, наиболее точно отражает исходные данные вторая регрессия, которая соответствует регрессионной зависимости
Кроме того были высчитаны:
1) Средние значения заданных наборов фактора и результата;
2) Дисперсии;
3) Среднеквадратические отклонения;
4) Коэффициент парной корреляции;
5) Характеристики регрессионных зависимостей;
6) Значения результатов по регрессионным зависимостям;
7) Остаточные дисперсии;
8) Коэффициенты Фишера.
Список использованнЫХ ИСТОЧНИКОВ
1. Регрессионный анализ [Электронный ресурс]. - 2012. - Режим доступа: http//am.tsuab.ru/files/ONI_lections45.pdf- Дата доступа :12.05.2012. 2.Язык программирования Си [Электронный ресурс]. - 2012 -Режим доступа: http://kpolyakov.narod.ru/school/c.htm/Хранениеиобработкаданных Дата доступа: 12.05.2012.
3. Мелещенко, А. Основы программирования на языке /А.А.Мелещенко. - Мн.: БГУИР, 2004. - 232 с.
4. Бусько, В Основы алгоритмизации и программирования: Конспект лекций для студ. всех спец. и форм обуч. БГУИР / В.Л.Бусько, А.Г.Корбит, Т.М.Кривоносова. - Мн.: БГУИР, 2004. - 103 с.
5.Программирование ввода-вывода данных и линейных вычислительных алгоритмов на языке Си: практическое пособие к выполнению лабораторных и контрольных работ по дисциплине “Вычислительная техника и программирование” для студентов технических специальностей дневной и заочной форм обучения (м/УК №3089) / О.А. Кравченко, А.М. Мартыненко. - Гомель: ГГТУ им. П.О. Сухого, 2005. - 33 с.
ПРИЛОЖЕНИЯ
Приложение А
Код программы на языке C файла kursovaya.cpp:
#include"bibliot.h"//подключаем головную библиотеку
/*подключаем русский язык*/
char bufRus[256];
char *Rus(const char * text)
{
CharToOem(text, bufRus);
return bufRus;
}
main()//главная функция
{
system("color F0");// Цвет экрана и шрифта (F - белый фон, 0 - чёрный шрифт)
puts("\n");
puts (Rus("\t МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ"));
puts (Rus("\t УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННО ТЕХНИЧЕСКИЙ"));
puts (Rus("\t УНИВЕРСИТЕТ ИМ. П.О.СУХОГО"));
puts("\n\n\n\n\n\n\n");
puts(Rus("\t Факультет автоматизированных и информационных систем"));
puts(Rus("\t Кафедра ''Информационные технологии''"));
puts(Rus("\t направление специальности 1-40 01 02-01 Информационные системы и"));
puts(Rus("\t технологии в проектировании и производстве\n\n\n\n\n"));
puts(Rus("\t КУРСОВАЯ РАБОТА"));
puts(Rus("\t по дисциплине ''Основы алгоритмизации и программирования''"));
puts(Rus("\tна тему:''Определение параметров регрессионной зависимости валовых"));
puts(Rus("\t доходов от торговли от амортизации основных средств торговли''"));
puts("\n\n\n\n\n\n\n\n");
puts(Rus("\t Исполнитель: студент гр. ИТ-12"));
puts(Rus("\t Ясонов В.А."));
puts(Rus("\t Руководитель: Лозовская Е.В."));
puts("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
puts(Rus("\t Гомель 2012"));
getch();
system("cls");
puts(Rus("Задание:"));
printf(Rus("Целью курсовой работы является получение студентами навыков по алгоритмизации и программированию.\nВ процессе выполнения работы студент решает следующие задачи:\n1)разработка алгоритма вычисления статистических характеристик по заданным формулам;\n2)запись алгоритма в виде блок-схемы и программы на языке Си;\n3)подготовка данных для отладки программы средствами табличного процессора MS Excel;\n4)изучение теоретических вопросов использования системы программирования.\n\nНа основе указанных исходных данных требуется написать программу на языке C, которая для заданных наборов фактора и результата рассчитывает следующие статистические характеристики:\n1)средние значения этих наборов\n2)дисперсии\n 3)среднеквадратические отклонения\n4)коэффициент парной корреляции\n 5)регрессионные зависимости\n6)значения результата по регрессионным зависимостям\n7)остаточные дисперсии\n8)коэффициенты Фишера\n"));
getch();
system("cls");
char nazv[50], s[100], vib;// Название райпо, вспомогательная строка, переменная для выбора - на экран выводить результаты или в файл
float x[100], y[100];// x - прочие производственне расходы, y - полная фактическая себестоимость
float Sx, Sy, Srx, Sry;// Sx, Sy - суммы элементов массивов x и y, Srx, Sry - Средние значения элементов массивов x и y
int i, n;// i - номер райпо, параметр цикла, n - количество райпо
float Somx, Somy, r;// Среднеквадратичные отклонения, коэффициент парной корреляции
float regr1[100], regr2[100], a0, a1;//значения первой и второй регрессий, коэффициенты a0, a1
float OstDisp1, OstDisp2, Fish1, Fish2;//Значения остаточных дисперсий, коэффициенты Фишера
char file[100];
FILE*f;// Описание файловой переменной
FILE*fout;//Файловая переменная для записи результатов
puts(Rus("Введите название файла"));
gets(file);
f=fopen(file,"r");// Открытие файла в режиме "r" - только чтение
system("cls");
if(f==NULL)// Проверяем, открылся ли файл, если значение NULL - ошибка открытия.
{
system("color 4F");// Цвет экрана и шрифта (4 - красный фон, F - белый шрифт)
puts(Rus("\n\n\n\n\n\n\n\n\n\n\t\t\tОшибка открытия файла!"));// Вывод сообщения об ошибке
}
else// Иначе...
{
printf(Rus("1)Для вывода на экран нажмите клавишу Enter\n2)Для записи данных в файл нажмит любую другую клавишу"));
scanf("%c", &vib);
system("cls");//Очистка экрана
if(vib=='\n')// Нажата клавиша Enter?
fout=fopen("con","a");// con - консоль (вывод на экран)
else// Иначе...
{
fout=fopen("fail.dat","w");//Открытие файла в режиме "w" - запись данных, все предыдущие данные стирются
printf( Rus("Файл записан,для выхода нажмите любую клавишу...\n"));//Вывод сообщения о том что информация записана в файл
}
/*Выводим шапку таблицы*/
fprintf(fout,"\t\xDA\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xc4\xc2\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xbf\n");
i=0;// Счетчик количества строк в файле
/*Считываем данные из файла,одновременно выводя их в таблицу*/
while(!feof(f))// Пока не конец файла...
{
fgets(s, 80, f);// Считываем строку, не более 80 символов. (Считает до ближайшего перехода на следующую строку - символа '\n').
strncpy(nazv, s, 21);//Из строки s копируем первые 21 символ в строку navz nazv[19]='\0';// Последнему символу присваиваем значение '\0' - конец строки.
x[i]=atof(&s[20]);//Начиная с 21 символа считываем значение х (все цифры до пробела)
y[i]=atof(&s[25]);//Начиная с 25 символа считываем значение у (все цифры до конц строки)
fprintf(fout,"\t\xb3%3d\xb3\%-21s\xb3%6.1f\xb3%7.1f\xb3\n", i+1, Rus(nazv), x[i], y[i]); //Выводим полученные значения.
i++;// Увеличиваем счетчик элементов на единицу
}
n=i;// Запоминаем количество элементов массива
/*Выводим низ таблицы*/
fprintf(fout,"\t\xc0\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xc4\xc1\xc4\xc4\xc4\xc4\xc4\xc4\xc4\xd9\n");
/*Вычисляем статистические величины - сумму, среднее значение, среднеквадратичное отклонение*/
statistic(n, x, &Sx, &Srx, &Somx);
statistic(n, y, &Sy, &Sry, &Somy);
/* Вывод сумм, средних значений и среднеквадратичных отклонений*/
fprintf(fout,Rus("Результаты вычислений в массиве x\nСреднее значение: %-15.f\nСреднеквадратичное отклонение: %.3f\n\n"), Sx, Srx, Somx);
fprintf(fout,Rus("Результаты вычислений в массиве y\nСреднее значение: %-15.f\nСреднеквадратичное отклонение: %.3f\n"), Sy, Sry, Somy);
r=top(n, x, Srx, y, Sry)/((n-1)*Somx*Somy);//Вычисление коэффициента парной корреляции
fprintf(fout,Rus("\nКоэффициент парной корреляции %.3f\n\n"), r);//Вывод коэффициента парной корреляции
if(fabs(r)<=0.5)//Если коэффициент парной коррелдяции по модулю меньше 0.5
{
system("color FC");// Цвет экрана и шрифта (F - белый фон, C - красный шрифт)
fprintf(fout, Rus("Связь между x и y слабая!"));//Вывод сообщения о слабой связи между x и у.
}
else//Иначе
{
regr(n, Sy, fi1, x, &a0, &a1, y);//Вычисление коэффициентов a0 и a1 для первой регрессии
/*Вычисление значений первой регрессии*/
for(i=0; i<n; i++)
regr1[i]=a0+a1*fi1(x[i]);
fprintf(fout,Rus("Коэффициенты а0 и а1 для первой регрессии:\n a0=%.3f\n a1=%.3f\n\n"),a0,a1);
regr(n, Sy, fi2, x, &a0, &a1, y);//Вычисление коэффициентов a0 и a1 для второй регрессии
/*Вычисление значений второй регрессии*/
for(i=0; i<n; i++)
regr2[i]=a0+a1*fi2(x[i]);
fprintf(fout,Rus("Коэффициенты а0 и а1 для второй регрессии:\n a0=%.3f\n a1=%.3f\n\n"),a0,a1);
/*Вывод значений первой и второй регрессии*/
fprintf(fout,"\xDA\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC2\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC2\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC2\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC2\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xBF");//
Шапка таблицы
fprintf(fout,"\n\xB3");
fprintf(fout, Rus("Название "));
fprintf(fout,"\xB3 X \xB3 Y \xB3 reg1 \xB3 reg2 \xB3\n");
fprintf(fout,"\xC3\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC5\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC5\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC5\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC5\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xB4");
i=0;
while(!feof(f))
{
fgets(s, 80, f);// Считываем строку, не более 80 символов. (Считает до ближайшего перехода на следующую строку - символа '\n').
strncpy(nazv, s, 21);//Из строки s копируем первые 21 символ в строку navz
nazv[19]='\0';
fprintf(fout,"\n\xB3%-20s\xB3%-8.3f\xB3%-8.3f\xB3%-10.3f\xB3%-10.3f\xB3\n",Rus(nazv),x[i],y[i],regr1[i],regr2[i]);
fprintf(fout,"\xC3\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC5\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC5\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC5\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC5\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xB4");
i++;
}
fprintf(fout,"\r\xC0\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC1\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC1\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC1\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC1\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xD9\n");//Низ таблицы
/*Вычисление остаточных дисперсий первой и второй регрессии*/
OstDisp1=disp (n, y, regr1);
OstDisp2=disp (n, y, regr2);
/*Вывод остаточных дисперсий*/
fprintf(fout, Rus("\n\nОстаточная дисперсия первой регрессии: %-10.1f\nОстаточная дисперсия второй регрессии: %-10.1f\n"), OstDisp1, OstDisp2);
/*Вычисление коэффициентов Фишера*/
Fish1=Somy*Somy/OstDisp1;
Fish2=Somy*Somy/OstDisp2;
fprintf(fout,Rus("\nКоэффициент Фишера для первой регрессии: %.3f\nКоэффициент Фишера для второй регрессии: %.3f\n\n"), Fish1, Fish2);//Вывод коэффициентов Фишера
if(Fish1>Fish2)//Если коэффициент Фишера для первой регрессии больше, чем для второй...
fprintf(fout,Rus("Первая регрессия \"лучше\""));//Выводим сообщение
else//Иначе...
fprintf(fout,Rus("Вторая регрессия \"лучше\"\n"));//Выводим сообщение
}
fclose(f);//Закрытие файла с исходными данными
fclose(fout);//Закрытие файла с результатами
}
getch();
return(0);
}
Приложение Б
Код библиотеки bibliot.h:
#ifndef _bibliot_H_
#define _bibliot_H_s_
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <string.h>
#include <math.h>
typedef float (*func)(float);
/*Вычисление среднего х и у, дисперсий x и у, среднеквадратичное отклонение х и у*/
void statistic(int n, float a[], float *S, float *Sr, float *Som)
{
int i;
float D;
*S=0;
for(i=0; i<n; i++)
*S=*S+a[i];
*Sr=*S/n;
D=0;
for(i=0; i<n; i++)
D=D+(a[i]-*Sr)*(a[i]-*Sr);
D=D/(n-1);
*Som=sqrt(D);
}
/*Вычисление коэффициента парной корреляции*/
float top (int n, float a[], float Sra, float b[], float Srb)
{
int i;
float S;
S=0;
for(i=0;i<n;i++)
S=S+(a[i]-Sra)*(b[i]-Srb);
return (S);
}
/*Вычисление результатов по регрессионным зависимостям*/
void regr(int n, float Sy, func fi, float a[], float *a0, float *a1, float b[])
{
int i;
float S1, S2, S3, d;
S1=0;
for(i=0; i<n; i++)
S1=S1+fi(a[i])*fi(a[i]);
S2=0;
for(i=0; i<n; i++)
S2=S2+fi(a[i]);
S3=0;
for(i=0; i<n;i++)
S3=S3+b[i]*fi(a[i]);
d=n*S1-S2*S2;
*a0=(Sy*S1-S2*S3)/d;
*a1=(n*S3-S2*Sy)/d;
}
/*Функция x=sqrt(x)*(log(sqrt(x)));*/
float fi1 (float x)
{
x=sqrt(x)*(log(sqrt(x)));
return(x);
}
/*Функция x=(x*x)/exp(1/x)*/
float fi2 (float x)
{
x=(x*x)/exp(1/x);
return(x);
}
/*Вычисление остаточных дисперсий*/
float disp (int n, float a[], float b[])
{
int i;
float S;
float D;
S=0;
for(i=0; i<n; i++)
S=S+(a[i]-b[i])*(a[i]-b[i]);
D=S/(n-1);
return(D);
}
#endif
Размещено на Allbest.ru
...Подобные документы
Функции ввода-вывода строк и символов языка Си. Вычисление среднего значения, дисперсии, среднеквадратических отклонений х и у, коэффициента парной корреляции, регрессии двух функций, остаточных дисперсий. Расчет параметров регрессионных зависимостей.
курсовая работа [421,7 K], добавлен 12.03.2016Графическая схема алгоритма решения. Расчет параметров регрессионных зависимостей с помощью надстройки анализа MS Excel. График с исходными данными и регрессионными зависимостями. Среда программирования Dev-C. Функциональность системы программирования.
курсовая работа [1,0 M], добавлен 19.11.2013Обзор встроенных функции табличного процессора Microsoft Excel, особенности их практического использования. Создание таблиц и их заполнение данными, построение графиков. Применение математических формул для выполнения запросов пакетов прикладных программ.
курсовая работа [3,9 M], добавлен 25.04.2013Формирование и расчет таблиц в табличном процессоре Excel. Расчет таблицы с использованием "Мастера функций". Построение диаграмм на основе табличных данных. Работа с базой данных "Книжный магазин" в Excel. Выручка по книгам, относящимся к одному типу.
контрольная работа [329,2 K], добавлен 26.09.2012Общее описание программы Statistica. Архитектура и интерфейс системы. Регрессионный анализ в Statistica. Решение задачи регрессионного анализа с помощью пакета анализа данных табличного процессора MS Excel. Многомерный дисперсионный анализ в SPSS.
курсовая работа [2,4 M], добавлен 22.01.2013Задачи линейного программирования. Многоугольник решений системы. Вычисление значения целевой функции. Интервальная группировка данных. Среднее квадратическое отклонение выборки. Вычисление коэффициента корреляции. Закон распределения случайной величины.
контрольная работа [389,6 K], добавлен 11.01.2012Математические возможности Mathcad и Microsoft Excel. Преобразование алгебраических выражений. Вычисление значения функции. Решение уравнений и систем. Вычисление значения интеграла, производных и пределов. Построение графиков функций. Работа с матрицами.
курсовая работа [559,5 K], добавлен 15.07.2012Изучение информационных ресурсов: понятие, особенности создания и использования, роль в информатизации общества. Формирование формы калькуляции стоимости выпечных изделий, производимых хлебозаводом "Колобок", с помощью табличного процессора MS Excel.
курсовая работа [1,7 M], добавлен 25.04.2013Определение зависимости между экспериментальными данными при помощи аппроксимации, особенности решения поставленной задачи различными способами, проведение расчетов с помощью табличного процессора Microsoft Excel и среды программирования Turbo Pascal 7.0.
курсовая работа [765,0 K], добавлен 25.02.2012Обзор разнообразных методов теории линейных систем: методов корреляционного и регрессионного анализа, косинор-анализа. Особенности применения факторного анализа. Программная реализация метода главных компонент. Разработка нелинейных регрессионных моделей.
дипломная работа [390,2 K], добавлен 03.09.2016- Применение встроенных функций табличного редактора excel для решения прикладных статистических задач
Проведение анализа динамики валового регионального продукта и расчета его точечного прогноза при помощи встроенных функций Excel. Применение корреляционно-регрессионного анализа с целью выяснения зависимости между основными фондами и объемом ВРП.
реферат [1,3 M], добавлен 20.05.2010 Анализ производства молока в районе с помощью табличного процессора MS Excel 2007. Входные данные: экономические показатели производства молока в хозяйствах. Выходная информация: рентабельность производства молока в хозяйствах, его себестоимость и цена.
реферат [1,0 M], добавлен 30.11.2010История развития и функции линейного программирования. Исследование условий типовых задач и возможностей табличного процессора. Решение задач о рационе питания, плане производства, раскрое материалов и рациональной перевозке груза в среде MS Excel.
курсовая работа [3,3 M], добавлен 28.04.2014Характеристика принципов решения инженерных задач с помощью различных информационных компьютерных комплексов. Решение задачи на языке программирования Pascal, с помощью средств математического пакета MathCAD, так же с помощь табличного процессора Excel.
курсовая работа [218,1 K], добавлен 22.08.2013Создание делового письма на фирменном бланке с помощью текстового редактора MS Word 2003. Представление динамики показателей с помощью табличного процессора MS Excel 2003. Создание динамической презентации о предприятии средствами MS Power Point 2003.
контрольная работа [24,5 K], добавлен 08.10.2012Разработка программ с помощью Turbo Pascal для решения задач, входящих в камеральные работы маркшейдера: решение обратной геодезической задачи и системы линейных уравнений методом Гаусса, определение координат прямой угловой засечки и теодолитного хода.
курсовая работа [1,5 M], добавлен 05.03.2013Ввод данных, построение графиков, встроенные функции БС и ПС для вычисления будущей стоимости с помощью формулы простых процентов (MS Excel). Синтаксис функции БС, вычисление будущего значения единой суммы. Вычисление текущего значения суммы (функция ПС).
лабораторная работа [1,8 M], добавлен 12.12.2010Разработка алгоритма и написание программы на языке Object Pascal, предназначенной для расчета траверса крюка мостового крана на изгиб. Определение расчетных размеров крана с помощью табличного процессора Microsoft Excel. Блок-схема и алгоритм расчета.
курсовая работа [519,3 K], добавлен 03.06.2010Анализ программы Microsoft Excel. Способы оформления элементов таблицы различными цветами. Этапы подготовки табличных документов. Характеристика табличного процессора EXCEL. Особенности проведения однотипных расчетов над большими наборами данных.
реферат [565,9 K], добавлен 14.09.2012Возможности табличного процессора Excel в создании и редактировании таблиц. Разработка структуры базы данных. Функции, выполняемые информационной технологией. Вычисление площади, занимаемой одним компьютером. Создание и редактирование формы и отчета.
курсовая работа [2,6 M], добавлен 16.11.2013