Дипломная работа: Процедуры идентификации сетевых структур, основанные на коэффициентах корреляции Кендалла и Спирмена

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

56. -0.0913459631861964 -0.40863386078084674 -0.05233410268262804 -0.20827353172454463 0.8024623178223143 0.8647315172782226 0.8038142580255461 -0.4687807659526227 0.83071301235432 -0.4662151147094583 -0.8265130380449413 0.7862050382555064 0.560057691866568 -0.702248083000251 -0.16533259782918086 0.6663485659469947 0.7358532579825505 0.40852921511485196 0.8800697814778186 0.760467350839902 -0.8091181729710225 -0.07348600755610393 -0.7002292256328049 0.8003914687227348 -0.37901655503666365 -0.023563169554216064 -0.08069963799368177 0.8148259678244478 0.860089615143668 0.7417180684967833 0.7220412638828693 0.7454440362120325 0.8883720076480819 0.8204946550427406 0.5011229403021128 0.6450504898544621 0.7592575208855366 0.8460421440310872 0.6872378616826157 -0.8020299143584565 -0.6618830675342675 -0.7973348683026327 -0.6496519859609511 -0.6493375259025363 -0.722148534178133 0.6005785697996507 0.27001725701174056 1.0 -0.680068364658176 0.8717271102107073;

57. 0.16536797295920186 0.48331852305308454 0.1920784365868285 0.38036937261460185 -0.6808164813443078 -0.6454307579456039 -0.7577133900525099 0.34503499207551847 -0.6428566762001433 0.3177545534940276 0.5901749710386411 -0.5313789101031088 -0.38068970552689363 0.6529757921449781 0.17446130311669544 -0.44704124220207364 -0.5460306438553018 -0.36358560515818883 -0.7269164361145732 -0.518530793279248 0.6391619747186505 0.0007919722923224609 0.5472071839464567 -0.6380888734497725 0.18385629246032484 -0.04931562503170856 0.20332836460606574 -0.5112905932629636 -0.5623713364405777 -0.7234259355110526 -0.44604775648721606 -0.6207910711744009 -0.7748651528135505 -0.45364537801809346 -0.4330245797755244 -0.24845293963253018 -0.7379166940685845 -0.6198590621037185 -0.5905525653378438 0.7445288921547281 0.5841612244195863 0.6382170709123108 0.499196611203586 0.6466467154531956 0.506467978888153 -0.7087748613931263 -0.29692665311172317 -0.680068364658176 1.0 -0.7571951671938293;

58. -0.01650931041916315 -0.3685366218425072 -0.16119479829430602 -0.3110679915778835 0.8424111278994232 0.9121980077070948 0.7579748854439583 -0.6150185691205592 0.7821165308828467 -0.4426138682026305 -0.8390531077005865 0.8291020524414462 0.5154724386129322 -0.8170554181878835 -0.059902512645132196 0.7770193461659242 0.8307406791898616 0.5761845676473248 0.9099674574423138 0.8203827949219864 -0.788031202565023 -0.22594471554724388 -0.7279216576904707 0.8703490092121895 -0.43067278925045654 0.07396837297207608 0.05108876338772324 0.7482550468438786 0.848154832877349 0.8373025176156048 0.7000803137909591 0.7762300082723728 0.8943534432148299 0.7917897683763822 0.5040678736527299 0.5778217359651399 0.7951390675050626 0.9045641589721176 0.6827379302132944 -0.846412718582176 -0.7356666359060426 -0.8612451731888968 -0.7283740543848112 -0.7234379545805272 -0.7653307640649273 0.7706770786708962 0.22804080687966718 0.8717271102107073 -0.7571951671938293 1.0];

59.

60.

61.

62.

63. % sigma = [ 1.000000 -0.118365 0.628995 -0.884607 0.863786 0.538263 0.867237 0.865734 0.646887 0.815381 ;

64. % -0.118365 1.000000 0.216864 0.033256 -0.049985 0.109708 -0.296135 -0.132362 0.265592 -0.161195 ;

65. % 0.628995 0.216864 1.000000 -0.734416 0.672728 0.679158 0.603983 0.551794 0.628441 0.757975 ;

66. % -0.884607 0.033256 -0.734416 1.000000 -0.853928 -0.657973 -0.841113 -0.779749 -0.732869 -0.839053 ;

67. % 0.863786 -0.049985 0.672728 -0.853928 1.000000 0.645029 0.804883 0.881694 0.735856 0.829102 ;

68. % 0.538263 0.109708 0.679158 -0.657973 0.645029 1.000000 0.388410 0.462004 0.840950 0.515472;

69. % 0.867237 -0.296135 0.603983 -0.841113 0.804883 0.388410 1.000000 0.766525 0.492746 0.870349 ;

70. % 0.865734 -0.132362 0.551794 -0.779749 0.881694 0.462004 0.766525 1.000000 0.553639 0.797180;

71. % 0.646887 0.265592 0.628441 -0.732869 0.735856 0.840950 0.492746 0.553639 1.000000 0.577822;

72. % 0.815381 -0.161195 0.757975 -0.839053 0.829102 0.515472 0.870349 0.797180 0.577822 1.000000];

73.

74. % [ 1.000000 0.843782 0.865288 0.164320 0.834586;

75. % 0.843782 1.000000 0.835603 0.332076 0.906777;

76. % 0.865288 0.835603 1.000000 0.017336 0.860707;

77. % 0.164320 0.332076 0.017336 1.000000 0.356630;

78. % 0.834586 0.906777 0.860707 0.356630 1.000000];

79. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

80. % 0 1 2 3 4

81. %0 1.000000 0.807255 0.903264 0.097237 0.881655

82. %1 0.807255 1.000000 0.882653 0.424451 0.915458

83. %2 0.903264 0.882653 1.000000 0.120237 0.926073

84. %3 0.097237 0.424451 0.120237 1.000000 0.316853

85. %4 0.881655 0.915458 0.926073 0.316853 1.000000

86. % 0 1 2 3 4

87. %0 1.000000 0.856590 0.886241 0.150745 0.850857

88. %1 0.856590 1.000000 0.850237 0.313821 0.917834

89. %2 0.886241 0.850237 1.000000 0.028393 0.865776

90. %3 0.150745 0.313821 0.028393 1.000000 0.363710

91. %4 0.850857 0.917834 0.865776 0.363710 1.000000

92. % задаем размер выходного временного ряда

93. n_out = 365;

94. % задаем вид распределения (нормальное)

95. %distribution = 'normal';

96. %вызываем функцию

97. %time_series(n_out, distribution, sigma);

98. % после вызова функции данные лежат в файле time_series_data.dat в той же

99. % папке что и функция

100. % % % данные из файла можно прочитать следующим образом

101. %filename = strcat('time_series_data', '.dat');

102. %TS = dlmread(filename);

103.

104. % %ex2

105. % % задаем мат.ожидание

106. % mu = [1,2];

107. %вызываем функцию

108. %time_series(n_out, distribution, sigma, mu);

109. %

110. % %ex3

111. % % задаем корреляционную матрицу

112. % sigma = [1 0.4 0.3;

113. % 0.4 1 0.5;

114. % 0.3 0.5 1];

115. % % задаем размер выходного временного ряда

116. % n_out = 100;

117. % % задаем вид распределения (нормальное)

118. distribution = 'student';

119. % %вызываем функцию

120. time_series(n_iter,n_out, distribution, sigma);

121. %

122. % % задаем число степеней свободы для распределения стЬюдента

123. % df = 5;

124. % %вызываем функцию

125. % time_series(n_out, distribution, sigma, df);

% Функция строит синтетические данные по заданной матрице корреляции

% Функция принимает на вход параметры

% n_iter -- количество итераций в цикле

% n_out -- длина выходного массива

% distribution -- тип распределения, принимает значения

% 'normal' -- нормальное распределение

% 'student' -- распределение Стьюдента

% sigma -- корреляционная матрица

% par -- дополнительный (необязательный) параметр

% для нормального распределения - мат.ожидание (единичный вектор

% по умолчанию)

% для стьюдента - число степеней свободы (2 по умолчанию)

function time_series(n_iter, n_out, distribution, sigma, par)

narg = nargin;

if (narg < 4)

error('Вы ввели не все параметры функции (n_out, distribution, sigma)')

end

for iter = 1:n_iter

if (strcmp(distribution, 'student'))

if (narg == 4)

par = 2;

end

TS = mvtrnd(sigma, par, n_out);

else

if (narg == 4)

sz = size(sigma, 1);

par = ones(sz, 1);

end

TS = mvnrnd(par, sigma, n_out);

end

% запись в файл

filename = sprintf('time_series_data_%u_', iter);

filename = strcat(filename, '.dat');

dlmwrite(filename, TS, 'delimiter', ',', 'precision', '%.6e');

end

end

3. Построения графов рынка и эксперименты(PYTHON)

def cortest(n,koef):

data = pd.read_csv("C:\\Users\\Слава\\Documents\\MATLAB\\time_series_data_"+str(n)+"_.dat", sep=",", header=None) #Считали

corrmat = data.corr()#матрица пирсона

#Граф Пирсона

a=corrmat

# mat_1_0=a.copy(deep=True)

# for c in range(len(a[1])):

# for b in range(len(a[1])):

# if a[c][b]>0.9:

# mat_1_0[c][b]=1

# else:

# mat_1_0[c][b]=0

#print(mat_1_0)

#Матрица Спирмена

testV=koef#Спирман

testV3=2*math.sin(math.pi/6*testV)#Пирсон

testV4=2/math.pi*(math.asin(testV3))#Кендал

mat_stirl=corrmat.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

mat_stirl[c][b]=scipy.stats.pearsonr(data[c],data[b])[0]

#print(mat_stirl)

#Граф Спирмена

mat_1_02=mat_stirl.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

if a[c][b]>koef:

mat_1_02[c][b]=1

else:

mat_1_02[c][b]=0

#print(mat_1_02)

#Матрица Кэндалла

mat_kend=corrmat.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

mat_kend[c][b]=scipy.stats.kendalltau(data[c],data[b])[0]

#print(mat_kend)

#Граф Кенделла

mat_1_03=mat_kend.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

if a[c][b]>testV4:

mat_1_03[c][b]=1

else:

mat_1_03[c][b]=0

#print(mat_1_03)

#Сравнение корреляций

e=mat_1_02-mat_1_03

#print(e)

n=0

m=0

for c in range(len(a[1])):

for b in range(len(a[1])):

if e[c][b]==0:

m=m+1

else:

n=n+1

m=m-len(a)

rez=m/(n+m)

print(rez)

return(rez)

def corFIND_OPT(n,koef):

data = pd.read_csv("C:\\Users\\Слава\\Documents\\MATLAB\\time_series_data_"+str(n)+"_.dat", sep=",", header=None) #Считали

corrmat = data.corr()#матрица пирсона

#Граф Пирсона

a=corrmat

top_rez=0

top_num=0

mass=[]

# mat_1_0=a.copy(deep=True)

# for c in range(len(a[1])):

# for b in range(len(a[1])):

# if a[c][b]>0.9:

# mat_1_0[c][b]=1

# else:

# mat_1_0[c][b]=0

#print(mat_1_0)

for i in range(100):

#Матрица Спирмена

mat_stirl=corrmat.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

mat_stirl[c][b]=scipy.stats.pearsonr(data[c],data[b])[0]

#print(mat_stirl)

#Граф Спирмена

mat_1_02=mat_stirl.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

if mat_stirl[c][b]>koef:

mat_1_02[c][b]=1

else:

mat_1_02[c][b]=0

#print(mat_1_02)

#Матрица Кэндалла

mat_kend=corrmat.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

mat_kend[c][b]=scipy.stats.kendalltau(data[c],data[b])[0]

#print(mat_kend)

#Граф Кенделла

mat_1_03=mat_kend.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

if mat_kend[c][b]>(i/100):

mat_1_03[c][b]=1

else:

mat_1_03[c][b]=0

#print(mat_1_03)

#Сравнение корреляций

#print(mat_stirl,mat_kend)

e=mat_1_02-mat_1_03

#print(e)

n=0

m=0

for c in range(len(a[1])):

for b in range(len(a[1])):

if e[c][b]==0:

m=m+1

else:

n=n+1

m=m-len(a)

rez=m/(n+m)

print(i,rez)

mass.append(rez)

if rez>top_rez:

top_rez=rez

top_num=(i/100)

return(top_rez,top_num,mass)

def corOPTIMIZE(n,koef):

data = pd.read_csv("C:\\Users\\Слава\\Documents\\MATLAB\\time_series_data_"+str(n)+"_.dat", sep=",", header=None) #Считали

corrmat = data.corr()#матрица пирсона

#Граф Пирсона

a=corrmat

top_rez=0

top_num1=0

top_num=0

# mat_1_0=a.copy(deep=True)

# for c in range(len(a[1])):

# for b in range(len(a[1])):

# if a[c][b]>0.9:

# mat_1_0[c][b]=1

# else:

# mat_1_0[c][b]=0

#print(mat_1_0)

for i in range(10):

#Матрица Спирмена

mat_stirl=corrmat.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

mat_stirl[c][b]=scipy.stats.pearsonr(data[c],data[b])[0]

#print(mat_stirl)

#Граф Спирмена

mat_1_02=mat_stirl.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

if mat_stirl[c][b]>koef:

mat_1_02[c][b]=1

else:

mat_1_02[c][b]=0

#print(mat_1_02)

#Матрица Кэндалла

mat_kend=corrmat.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

mat_kend[c][b]=scipy.stats.kendalltau(data[c],data[b])[0]

#print(mat_kend)

#Граф Кенделла

mat_1_03=mat_kend.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

if mat_kend[c][b]>i/10:

mat_1_03[c][b]=1

else:

mat_1_03[c][b]=0

#print(mat_1_03)

#Сравнение корреляций

#print(mat_stirl,mat_kend)

e=mat_1_02-mat_1_03

#print(e)

n=0

m=0

for c in range(len(a[1])):

for b in range(len(a[1])):

if e[c][b]==0:

m=m+1

else:

n=n+1

m=m-len(a)

rez=m/(n+m)

print(i/10,rez)

if rez>top_rez:

top_rez=rez

top_num1=(i/10)

########################################################################## условие вверх-вниз

for i in range(1):

mat_stirl=corrmat.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

mat_stirl[c][b]=scipy.stats.pearsonr(data[c],data[b])[0]

#print(mat_stirl)

#Граф Спирмена

mat_1_02=mat_stirl.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

if mat_stirl[c][b]>koef:

mat_1_02[c][b]=1

else:

mat_1_02[c][b]=0

#print(mat_1_02)

#Матрица Кэндалла

mat_kend=corrmat.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

mat_kend[c][b]=scipy.stats.kendalltau(data[c],data[b])[0]

#print(mat_kend)

#Граф Кенделла

mat_1_03=mat_kend.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

if mat_kend[c][b]>i/100+top_num1+0.01:

mat_1_03[c][b]=1

else:

mat_1_03[c][b]=0

#print(mat_1_03)

#Сравнение корреляций

#print(mat_stirl,mat_kend)

e=mat_1_02-mat_1_03

#print(e)

n=0

m=0

for c in range(len(a[1])):

for b in range(len(a[1])):

if e[c][b]==0:

m=m+1

else:

n=n+1

m=m-len(a)

rez=m/(n+m)

#print(i/100+top_num1+0.01,rez)

if rez<top_rez:

top_num1=top_num1-0.1

###########################

for i in range(10):

#Матрица Спирмена

mat_stirl=corrmat.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

mat_stirl[c][b]=scipy.stats.pearsonr(data[c],data[b])[0]

#print(mat_stirl)

#Граф Спирмена

mat_1_02=mat_stirl.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

if mat_stirl[c][b]>koef:

mat_1_02[c][b]=1

else:

mat_1_02[c][b]=0

#print(mat_1_02)

#Матрица Кэндалла

mat_kend=corrmat.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

mat_kend[c][b]=scipy.stats.kendalltau(data[c],data[b])[0]

#print(mat_kend)

#Граф Кенделла

mat_1_03=mat_kend.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

if mat_kend[c][b]>i/100+top_num1:

mat_1_03[c][b]=1

else:

mat_1_03[c][b]=0

#print(mat_1_03)

#Сравнение корреляций

#print(mat_stirl,mat_kend)

e=mat_1_02-mat_1_03

#print(e)

n=0

m=0

for c in range(len(a[1])):

for b in range(len(a[1])):

if e[c][b]==0:

m=m+1

else:

n=n+1

m=m-len(a)

rez=m/(n+m)

#print(i/100+top_num1,rez)

if rez>top_rez:

top_rez=rez

top_num=(i/100+top_num1)

if top_num==0:

top_num=top_num1+0.1

########################################

return(top_rez,top_num)

def corFIND_OPT_Cliq(n,koef):

data = pd.read_csv("C:\\Users\\Слава\\Documents\\MATLAB\\time_series_data_"+str(n)+"_.dat", sep=",", header=None) #Считали

corrmat = data.corr()#матрица пирсона

#Граф Пирсона

a=corrmat

top_rez=0

top_num=0

mass=[]

# mat_1_0=a.copy(deep=True)

# for c in range(len(a[1])):

# for b in range(len(a[1])):

# if a[c][b]>0.9:

# mat_1_0[c][b]=1

# else:

# mat_1_0[c][b]=0

#print(mat_1_0)

for i in range(100):

#Матрица Спирмена

G=nx.Graph()

G2=nx.Graph()

mat_stirl=corrmat.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

mat_stirl[c][b]=scipy.stats.pearsonr(data[c],data[b])[0]

#print(mat_stirl)

#Граф Спирмена

mat_1_02=mat_stirl.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

if mat_stirl[c][b]>koef:

mat_1_02[c][b]=1

G.add_edge(c,b)

else:

mat_1_02[c][b]=0

from networkx.algorithms.approximation import clique

S_cliq=(clique.max_clique(G))

#print(mat_1_02)

#Матрица Кэндалла

mat_kend=corrmat.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

mat_kend[c][b]=scipy.stats.kendalltau(data[c],data[b])[0]

#print(mat_kend)

#Граф Кенделла

mat_1_03=mat_kend.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

if mat_kend[c][b]>(i/100):

mat_1_03[c][b]=1

G2.add_edge(c,b)

else:

mat_1_03[c][b]=0

from networkx.algorithms.approximation import clique

K_cliq=(clique.max_clique(G2))

#print(mat_1_03)

#Сравнение корреляций

#print(mat_stirl,mat_kend

rez=1-abs((len(S_cliq)-len(K_cliq))/(max(len(S_cliq),len(K_cliq))))

print(i,rez)

mass.append(rez)

if rez>top_rez:

top_rez=rez

top_num=(i/100)

return(top_rez,top_num,mass)

def cortest_Cliq(n,koef):

data = pd.read_csv("C:\\Users\\Слава\\Documents\\MATLAB\\time_series_data_"+str(n)+"_.dat", sep=",", header=None) #Считали

corrmat = data.corr()#матрица пирсона

#Граф Пирсона

a=corrmat

top_rez=0

top_num=0

mass=[]

# mat_1_0=a.copy(deep=True)

# for c in range(len(a[1])):

# for b in range(len(a[1])):

# if a[c][b]>0.9:

# mat_1_0[c][b]=1

# else:

# mat_1_0[c][b]=0

#print(mat_1_0)

for i in range(1):

#Матрица Спирмена

G=nx.Graph()

G2=nx.Graph()

mat_stirl=corrmat.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

mat_stirl[c][b]=scipy.stats.pearsonr(data[c],data[b])[0]

#print(mat_stirl)

#Граф Спирмена

mat_1_02=mat_stirl.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

if mat_stirl[c][b]>koef:

mat_1_02[c][b]=1

G.add_edge(c,b)

else:

mat_1_02[c][b]=0

from networkx.algorithms.approximation import clique

S_cliq=(clique.max_clique(G))

#print(mat_1_02)

#Матрица Кэндалла

mat_kend=corrmat.copy(deep=True)

for c in range(len(a[1])):

for b in range(len(a[1])):

mat_kend[c][b]=scipy.stats.kendalltau(data[c],data[b])[0]

Источник: https://otherreferats.allbest.ru/download/1216564/