%% РпупфйкпрпЯзуз ЧщсйкЮт УхнЬцейбт уе ДедпмЭнб Ерйцбнейюн (Рплхгюнщн)
% *ЦбЯдщн КхсйбкЯдзт*
%
% ФмЮмб ГещгсбцЯбт РбнерйуфзмЯпх БйгбЯпх

%% ЕйубгщгЮ дедпмЭнщн уе рплхгюнб кбй рлзспцпсЯет
load sidsNorthCarolina.mat
sidsInfo

%% РспкбфбскфйкЬ
Vertices = CountyVertices;
Centroids = poly2centroid(Vertices);
% УхнфефбгмЭнет кенфспейдюн рплхгюнщн
sidsCases = Data74to78(:,1);
nDat = size(sidsCases,1);
idPoly = num2str((1:nDat)');
% ухмвплпуейсЬ ме фпн бэопнфб бсйимь фпх кЬие рплхгюнпх
plotPars = {'color', 'vbar'}; 
% color -> Эгчсщмз брейкьнйуз, vbar -> ме кЬиефп хрьмнзмб чсюмбфпт

%% Брейкьнйуз дедпмЭнщн
polygonmap(Vertices,sidsCases,1,'cont',[0 40],plotPars);
% Vertices -> кхшелщфьт рЯнбкбт ме ухнфефбгмЭнет кпсхцюн рплхгюнщн
% 1 -> уфЮлз фпх рЯнбкб sidsCases фзт прпЯбт фб дедпмЭнб иЭлпхме нб брейкпнЯупхме
% [0 40] = [colormin colormax] % фймЮ гйб елЬчйуфп кбй мЭгйуфп ьсйп чсюмбфпт
title('SIDS cases');

%% РЯнбкбт гейфнЯбузт ме вЬуз фб кпйнЬ ьсйб (row-standardized)
order = 1; % 1зт фЬозт гейфнЯбуз
adjacencyType = 'boundary'; % ме вЬуз фб кпйнЬ ьсйб
params = order;
W = spweights(Vertices,adjacencyType,params,'rowstand');
% ЕреоЮгзуз фпх ейубгщмЭнпх adjacencyType
% adjacencyType = 'boundary' -> гейфнЯбуз ме вЬуз кпйнЬ ьсйб
% adjacencyType = 'distance' -> гейфнЯбуз мЭущ брьуфбузт мефбоэ кенфспейдюн
% adjacencyType = 'voronoi' -> гейфнЯбуз мЭущ фсйгщнйумпэ Delaunay
% adjacencyType = 'knearest' -> гейфнЯбуз K-рлзуйЭуфесщн гейфьнщн
% ЕреоЮгзуз фпх ейубгщмЭнпх params
% 'boundary' -> params = order
% 'distance' -> params = [distLow distUpp]
% 'delaunay' -> params = []
% 'knearest' -> params = k

%% Дйбурпсьгсбммб фпх Moran
help moranscatter
% Ейубгюменб
% 1 -> уфЮлз фпх рЯнбкб sidsCases рспт бнЬлхуз
% W -> рЯнбкбт гейфнЯбузт
Out = moranscatter(sidsCases,1,W);
% Еобгюменб
% Out.attr    -> бсчйкЭт фймЭт 
% Out.attrlag -> мЭупй ьспй гейфпнйкюн мефсЮуещн
%xlabel('SIDS cases','FontSize',12);
%ylabel('Neighborhood averages of SIDS cases','FontSize',12);

%% Брейкьнйуз мЭупх ьспх гейфпнйкюн мефсЮуещн кЬие рплхгюнпх
polygonmap(Vertices,Out.attrlag,1,'cont',[0 40],plotPars);
title('Neighborhood averages of SIDS cases');

%% ЧщсйкЮ брейкьнйуз фщн дйбцьсщн фэрщн чщсйкЮт ухнЬцейбт
idLabel = []; % no labels to draw
refVal = mean(sidsCases); % reference value
Out = moranscatter(sidsCases,1,W,idLabel,refVal);
lab = {'LL','LH','HL','HH'};
polygonmap(Vertices,Out.llhh,1,'cat',lab,plotPars);
% cat -> кбфзгпсйкЮ мефбвлзфЮ 
title('Spatial representation of Moran scatter plot');

%% КбиплйкпЯ (global) деЯкфет чщсйкЮт ухнЬцейбт фпх Moran кбй Geary
moranGlobal = spassociationW(sidsCases,1,W,'moran','global');
% 1 -> уфЮлз фпх рЯнбкб sidsCases ме фб дедпмЭнб фзт хрь мелЭфз мефбвлзфзт
disp(moranGlobal)

%% ДейгмбфплзрфйкЮ кбфбнпмЮ фпх деЯкфз чщсйкЮт ухнЬцейбт фпх Moran
% ме вЬуз фз мзденйкЮ хрьиеуз Эллейшзт чщсйкЮт ухнЬцейбт
close all
nReal2Sim = 500;
figure
moranGlobal = spassociationW(sidsCases,1,W,'Moran','global',nReal2Sim);
disp(moranGlobal)
% 1п уфпйчеЯп = рбсбфзспэменз фймЮ фпх Moran
% 2п уфпйчеЯп = рйибньфзфб хрЭсвбузт рбсбфзспэмензт фймЮт брь фз мзденйкЮ
%               хрьиеуз (P-value)

%% ФпрйкпЯ деЯкфет чщсйкЮт ухнЬцейбт фпх Moran гйб фб дедпмЭнб SIDS
MoranLocal = spassociationW(sidsCases,1,W,'Moran','local');
size(MoranLocal)
polygonmap(Vertices,MoranLocal.local,1,'cont',[-1 1],plotPars);
% [-1 1] -> чсщмбфйкЬ ьсйб
title('Local Moran indicators for SIDS cases');

%% P-values кбй уфбфйуфйкЬ узмбнфйкЬ LISAs
figure
MoranLocal = spassociationW(sidsCases,1,W,'Moran','local',nReal2Sim);
size(MoranLocal)
% 1з уфЮлз -> фймЭт фпх фпрйкпэ деЯкфз Moran
% 2з уфЮлз -> рйибньфзфб хрЭсвбузт (P-value) гйб иефйкЮ бхфп-ухучЭфйуз
% 3з уфЮлз -> рйибньфзфб хрЭсвбузт (P-value) гйб бснзфйкЮ бхфп-ухучЭфйуз
polygonmap(Vertices,MoranLocal.p2,1,'cont',[0 1],plotPars);
title('P-values (positive association) for SIDS local Moran indicators');

%% УфбфйуфйкЬ узмбнфйкЮ иефйкЮ Ю бснзфйкЮ фпрйкЮ бхфпухучЭфйуз
figure
sigLevel = 0.1;
mLocSig = nan(numel(sidsCases),1);
mLocSig(MoranLocal.p1l<sigLevel) = 0;  % negative association
mLocSig(MoranLocal.p1r<sigLevel) = 1;  % positive association
lab = {'- assoc.','+ assoc.'};
polygonmap(Vertices,mLocSig,1,'cat',lab,plotPars);
title('Areas with significant (p<0.1 or p>0.9) local Moran indicators');

%% Дйбурпсьгсбммб фпх Moran гйб уфбфйуфкЬ узмбнфйкЬ рплэгщнб ме фэрпхт ухнЬцейбт
figure
MoranLocal = spassociationW(sidsCases,1,W,'Moran','local',nReal2Sim);
OutSig = moranscatter(sidsCases,1,W,idLabel,refVal,MoranLocal,'zscore',sigLevel,'p2');
title('Moran scatter plot (significant local spatial association)');
xlabel('SIDS cases','FontSize',12);

%% ЧщсйкЮ брейкьнйуз уфбфйуфйкЬ узмбнфйкюн рплхгюнщн ме фэрпхт ухнЬцейбт
% fix this....
figure
lab = {'LL','LH','HL','HH'};
polygonmap(Vertices,OutSig.llhhsig,1,'cat',lab,plotPars);
title('Polygons with significant local spatial association');
hold on
iSig = ~isnan(OutSig(:,2));
ht=text(Centroids(iSig,1),Centroids(iSig,2),idPoly(iSig,:));
set(ht,'HorizontalAlignment','Center');
hold off