Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

СОИ_Лаба_4

.docx
Скачиваний:
2
Добавлен:
18.12.2019
Размер:
141.46 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

КАФЕДРА № 41

ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

доцент

Е.А. Бакин

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №4

Обработка системы случайных величин

по курсу: Статистическая обработка информации

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ ГР. №

4616

А.В.Павлов

подпись, дата

инициалы, фамилия

Цель работы

Изучение и реализация метода нахождения выборочного коэффициента линейной корреляции между парой случайных величин, а также алгоритма подбора коэффициентов полиномиальной регрессии.

Вариант 7

Номер варианта

7

0

2

2

3

3

0

Номер варианта

a

b

c

d

e

7

0

5

-4

-5

4

Теоретический расчет

,

Листинг

Импорт библиотек для построение графика и вычислений

Список N из начальных данных

Функция main

Цикл от I до 4

Создание массива данных непрерывного распределения размером 2*N

Подсчет интегральной функции с помощью scipy

Подсчет M

Цикл от z до длинны M

Подсчет настоящих ИФ

Добавление данных в массив

Подсчет настоящей сигмы

Подсчет моментов м1 и м2

Подсчет v1 и v2 через заданную формулу

Подсчет коэффициента симметрии и эксцесса через формулу

Подсчет квадрата ошибки

Подсчет эмпирической интегральной функции

Рисование графиков

График 1 – плотность, График 2 – Имперская и интегральная функция

График 3 – График ошибки, График 4 - Диаграмма Каллена-Фрея

Листинг программы

from scipy.stats import norm

from scipy.stats import uniform

import numpy as np

from sympy import *

import matplotlib.pyplot as plt

N=([2**i for i in range(1, 16)])

X = (norm.rvs(loc=0, scale=2, size=2**15))

Y = (norm.rvs(loc=0, scale=2, size=2**15))

r=[]

for x in N:

a1=np.mean(X[0:x]) #МО кси

a2=np.mean(Y[0:x]) #МО n

sko1=np.sqrt(np.mean((X[0:x] - a1) ** 2)) #СКО кси

sko2 = np.sqrt(np.mean((Y[0:x] - a2) ** 2)) #СКО n

a3=np.mean(X[0:x]*Y[0:x]) #1смеш момент

r.append(((a3-a1*a2)/sko1*sko2))

fig = plt.figure()

ax1 = fig.add_axes([0,1.2,1,1])

ax1.set_title('Оценка корел.')

ax1.set_xscale('log', basex=2)

ax1.axis([2, 2**15, -2, 2])

ax1.plot(N, r)

E=uniform.rvs(loc=-1, scale=2, size=2**15)

n=norm.rvs(loc=0, scale=0.4, size=2**15)

X=E[0:100]

X2=E

F=5*(X**3)-4*(X**2)-5*X+4

Y=F+n[0:100]

FF=5*(X2**3)-4*(X2**2)-5*X2+4

Y2=FF+n

ax2 = fig.add_axes([0,0,1,1])

ax2.set_xlim(-1,1)

ax2.scatter(X, Y, marker='o')

Z=np.arange(-1,1,0.02)

F2=5*(Z**3)-4*(Z**2)-5*Z+4

ax2.plot(Z, F2 ,color='red',lw=4)

ax2.set_title('Полином 4')

plt.grid()

PSI = np.ones(100)

PSI = np.vstack((PSI,X))

PSI = np.vstack((PSI,X**2))

PSI = np.vstack((PSI,X**3))

PSI = np.vstack((PSI,X**4))

S=np.dot(PSI,np.transpose(PSI))

k= np.dot(np.transpose(PSI),np.linalg.matrix_power((S),(-1)))

k=np.dot(Y,k)

F2=k[4]*(Z**4)+k[3]*(Z**3)+k[2]*(Z**2)+k[1]*Z+k[0]

ax3 = fig.add_axes([1.1,0,1,1])

ax3.set_xlim(-1,1)

ax3.scatter(X, Y, marker='o')

ax3.plot(Z,F2,color='red',lw=4)

ax3.set_title('Полином 4 по МНК')

plt.grid()

PSI = np.ones(100)

PSI = np.vstack((PSI,X))

PSI = np.vstack((PSI,X**2))

PSI = np.vstack((PSI,X**3))

S=np.dot(PSI,np.transpose(PSI))

k= np.dot(np.transpose(PSI),np.linalg.matrix_power((S),(-1)))

k=np.dot(Y,k)

ax4 = fig.add_axes([0,-1.2,1,1])

F2 = k[3]*(Z**3)+k[2]*(Z**2)+k[1]*Z+k[0]

ax4.scatter(X, Y, marker='o')

ax4.plot(Z,F2,color='red',lw=4)

ax4.set_title('Полином 3 по МНК')

plt.grid()

PSI = np.ones(100)

PSI = np.vstack((PSI,X))

PSI = np.vstack((PSI,X**2))

S=np.dot(PSI,np.transpose(PSI))

k= np.dot(np.transpose(PSI),np.linalg.matrix_power((S),(-1)))

k=np.dot(Y,k)

ax5 = fig.add_axes([1.1,-1.2,1,1])

ax5.scatter(X, Y, marker='o')

F2=k[2]*(Z**2)+k[1]*Z+k[0]

ax5.plot(Z,F2,color='red',lw=4)

ax5.set_title('Полином 2 по МНК')

plt.grid()

PSI = np.ones(100)

PSI = np.vstack((PSI,X))

S=np.dot(PSI,np.transpose(PSI))

k= np.dot(np.transpose(PSI),np.linalg.matrix_power((S),(-1)))

k=np.dot(Y,k)

ax6 = fig.add_axes([1.1,1.2,1,1])

ax6.scatter(X, Y, marker='o')

F2=k[1]*Z+k[0]

ax6.plot(Z,F2,color='red',lw=4)

ax6.set_title('Полином 1 по МНК')

plt.grid()

r1 = np.array([0, 0])

for x in N:

X1=E[0:x]

Y1=Y2[0:x]

PSI = np.ones(x,)

PSI = np.vstack((PSI,X1))

S=np.dot(PSI,np.transpose(PSI))

k= np.dot(np.transpose(PSI),np.linalg.matrix_power((S),(-1)))

k=np.dot(Y1,k)

r1 = np.vstack((r1, k))

r1 = r1[1:len(r1)]

fig2 = plt.figure()

ax7 = fig2.add_axes([0,1.2,1,1])

ax7.set_xscale('log', basex=2)

ax7.plot(N,r1[:, 1],label='k0',lw=4)

ax7.plot(N, r1[:, 0],label='k1',lw=4)

ax7.set_title('Зависимость оценок коэффициентов регрессии от N,п=1')

ax7.legend()

ax7.set_xlim(2**4,2**15)

ax7.set_ylim(-10,10)

plt.grid()

r2 = np.array([0,0,0])

for x in N:

X1=E[0:x]

Y1=Y2[0:x]

PSI = np.ones(x,)

PSI = np.vstack((PSI,X1))

PSI = np.vstack((PSI,X1**2))

S=np.dot(PSI,np.transpose(PSI))

k= np.dot(np.transpose(PSI),np.linalg.matrix_power((S),(-1)))

k=np.dot(Y1,k)

r2 = np.vstack((r2, k))

r2 = r2[1:len(r2)]

ax8 = fig2.add_axes([1.1,1.2,1,1])

ax8.set_xscale('log', basex=2)

ax8.plot(N,r2[:, 2],label='k0',lw=4)

ax8.plot(N, r2[:, 1],label='k1',lw=4)

ax8.plot(N, r2[:, 0],label='k2',lw=4)

ax8.set_title('Зависимость оценок коэффициентов регрессии от N,п=2')

ax8.legend()

ax8.set_xlim(2**4,2**15)

ax8.set_ylim(-10,10)

plt.grid()

r3 = np.array([0,0,0,0])

for x in N:

X1=E[0:x]

Y1=Y2[0:x]

PSI = np.ones(x,)

PSI = np.vstack((PSI,X1))

PSI = np.vstack((PSI,X1**2))

PSI = np.vstack((PSI,X1**3))

S=np.dot(PSI,np.transpose(PSI))

k= np.dot(np.transpose(PSI),np.linalg.matrix_power((S),(-1)))

k=np.dot(Y1,k)

r3 = np.vstack((r3, k))

r3 = r3[1:len(r3)]

ax9 = fig2.add_axes([0,0,1,1])

ax9.set_xscale('log', basex=2)

ax9.plot(N,r3[:, 3],label='k0',lw=4)

ax9.plot(N, r3[:, 2],label='k1',lw=4)

ax9.plot(N, r3[:, 1],label='k2',lw=4)

ax9.plot(N, r3[:, 0],label='k3',lw=4)

ax9.set_title('Зависимость оценок коэффициентов регрессии от N,п=3')

ax9.legend()

ax9.set_xlim(2**4,2**15)

ax9.set_ylim(-10,10)

plt.grid()

r4 = np.array([0,0,0,0,0])

for x in N:

X1=E[0:x]

Y1=Y2[0:x]

PSI = np.ones(x,)

PSI = np.vstack((PSI,X1))

PSI = np.vstack((PSI,X1**2))

PSI = np.vstack((PSI,X1**3))

PSI = np.vstack((PSI,X1**4))

S=np.dot(PSI,np.transpose(PSI))

k= np.dot(np.transpose(PSI),np.linalg.matrix_power((S),(-1)))

k=np.dot(Y1,k)

r4 = np.vstack((r4, k))

r4 = r4[1:len(r4)]

ax10 = fig2.add_axes([1.1,0,1,1])

ax10.set_xscale('log', basex=2)

ax10.plot(N,r4[:, 4],label='k0',lw=4)

ax10.plot(N, r4[:, 3],label='k1',lw=4)

ax10.plot(N, r4[:, 2],label='k2',lw=4)

ax10.plot(N, r4[:, 1],label='k3',lw=4)

ax10.plot(N, r4[:, 0],label='k4',lw=4)

ax10.set_title('Зависимость оценок коэффициентов регрессии от N,п=4')

ax10.legend()

plt.grid()

ax10.set_xlim(2**4,2**15)

ax10.set_ylim(-10,10)

Результат работы

Рисунок 2- Результат работы

Вывод:

В ходе лабораторной работы, я научился анализировать закон случайной величины. Так же строить эмпирический график интегральной функции и плотности вероятности. С помощью диаграммы Каллена-Фрея нашел истинную принадлежность распределения к равномерное, что соответствует истине, а значит работа выполнена правильно

Соседние файлы в предмете Статистика