СОИ_Лаба_4
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
КАФЕДРА № 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- Результат работы
Вывод:
В ходе лабораторной работы, я научился анализировать закон случайной величины. Так же строить эмпирический график интегральной функции и плотности вероятности. С помощью диаграммы Каллена-Фрея нашел истинную принадлежность распределения к равномерное, что соответствует истине, а значит работа выполнена правильно