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

СОИ_Лаба_3

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

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

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

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

КАФЕДРА № 41

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

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

доцент

Е.А. Бакин

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

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

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

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

Анализ закона распределения случайной величины

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

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

СТУДЕНТ ГР. №

4616

А.В.Павлов

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

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

Цель работы

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

Вариант 7

7

Равномерное

a = -10, b = 10

Рисунок 1 – Графики плотности и функции вероятности непрерывного распределения

Листинг

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

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

Функция main

Цикл от I до 4

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

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

Подсчет M

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

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

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

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

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

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

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

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

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

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

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

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

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

import numpy as np

import scipy.stats as st

import matplotlib.pyplot as plt

import math

from scipy import integrate

import statsmodels.api as sm

N=[5,7,10,14]

def main():

v1=[]

v2=[]

Y1=[]

Y2=[]

eh=[]

ec=[]

for i in range(4):

func=1/(10+10)

#X= np.random.uniform(-10,10,size=2**N[i])

X = np.array(st.uniform.rvs(-10,20, size=2**N[i]))

XS= np.sort(X)

CDF=st.uniform.cdf(XS,-10,20)

lens=len(X)

F2 = np.array(range(lens))/float(lens)

M = 1 + round(math.log2(len(X)))

interval=[]

for z in range(M):

xx=20/M

xxs=-10+xx*z

interval.append(xxs)

interval.append(10)

funcx=[]

sss=np.linspace(-10,10,M)

NS=np.arange(1,2**N[i])

summs=0

sigma1=[]

for q in range(M):

xmax=[]

xmin=[]

for x in range(len(X)):

if XS[x]>interval[q] and XS[x]<interval[q+1]:

xmax.append(XS[x])

#funcx.append(0.05/(xmax[-1]-xmax[0]))

funcx.append((len(xmax))/(interval[q+1]-interval[q])/len(X))

sigms=(1-(funcx[q]/(1/M)))**2

summs=+sigms

eh.append(summs)

#funcx.append(NS/len(X))

interval.pop(0)

sigma_true=st.uniform.std(-10,20)

m1=st.uniform.moment(3,-10,20)

m2=st.uniform.moment(4,-10,20)

v1.append(m1/sigma_true**3)

v2.append(m2/sigma_true**4)

sigma= np.std(X,axis=0)

B3=st.moment(X,moment=3)

Y1.append(B3/sigma**3)

B4=st.moment(X,moment=4)

Y2.append(B4/sigma**4)

summ=0

for x in range(M):

sk=(1-(sigma/sigma_true))**2

summ+=sk

ecdf = sm.distributions.ECDF(X)

x = np.linspace(min(X), max(X))

y = ecdf(x)

ecdfx=ecdf.y

ecdfx=np.delete(ecdfx,0)

ECDF=np.array(np.sum(X/np.sum(X)))

print(ECDF)

XSS=np.array(XS)

ras= ECDF - CDF

print(ras)

ec.append(max(np.abs(ras)))

fig = plt.figure()

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

ax1.grid(True, color = 'g', lw = 0.2)

ax1.set_xlim(-10,10)

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

ax2.grid(True, color = 'g', lw = 0.2)

ax2.set_xlim(-10,10)

if i>=1:

MM=M

ax1.set_title(('График при плотности при N=', len(X)), color = 'black')

ax1.set_ylabel('f(x)')

ax1.axhline(func, color = 'g',)

ax1.step(sss,funcx,where ='mid',lw=4)

ax1.set_ylim(0,0.1)

print(len(CDF))

F3=np.arange(-10,10)

#plt.bar(XS,F2, alpha=0.8)

ax2.set_title(('График инт. и эмп интегральной функций при N= ',len(X)), color = 'black')

ax2.set_ylabel('F(x)')

hist = ax2.hist(XS, bins = len(CDF), cumulative='True',histtype='step',lw=4,density = 'True',range=(-10, 10))

ax2.plot(XS,CDF,lw=4)

#ax2.plot(ecdf.x,ecdf.y)

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

ax4.set_title('График ошибки', color = 'black')

ax4.grid(True, color = 'g', lw = 0.2)

ax4.loglog(t_y,eh, basex=2,basey=2,label='Eh')

ax4.loglog(t_y,ec, basex=2,basey=2,label='Ec')

ax4.legend(loc='upper right')

ax5 = fig.add_axes([0,-3.6,1,1])

ax5.grid(True, color = 'g', lw = 0.2)

ax5.set_ylim(2.5,1)

ax5.set_xlim(-0.2,0.2)

ax5.set_title('Диаграмма Каллена-Фрея', color = 'black')

for i in range(4):

ax5.scatter( Y1[i]**2,Y2[i],s=200, label=('При объеме выборки=',2**N[i]))

ax5.legend(loc='upper right')

plt.show()

main()

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

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

Вывод:

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

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