Bolezni srca in ožilja (BSO) so globalno vodilni vzrok smrti, terjajo ocenjenih 17,9 milijona življenj vsako leto. BSO predstavljajo skupino motenj srca in krvnih žil, vključno s koronarno srčno boleznijo, možgansko kapjo, revmatično srčno boleznijo in drugimi pogoji. Več kot štiri od petih smrtnih primerov BSO je posledica srčnih napadov in možganskih kapi, in ena tretjina teh smrti se zgodi prezgodaj pri ljudeh, mlajših od 70 let (WHO, n.d.)

Najpomembnejši vedenjski dejavniki tveganja za srčne bolezni in možganske kapi so nezdrava prehrana, telesna neaktivnost, uporaba tobaka in škodljiva uporaba alkohola. Učinki vedenjskih dejavnikov tveganja se lahko pokažejo pri posameznikih kot povišan krvni tlak, povišan krvni sladkor, povišane krvne maščobe ter prekomerna telesna teža in debelost. Ti “posredni dejavniki tveganja” se lahko merijo v primarnih zdravstvenih ustanovah in kažejo na povečano tveganje za srčni napad, možgansko kap, srčno popuščanje in druge zaplete (WHO, n.d.)

Identifikacija tistih z najvišjim tveganjem za BSO in zagotovitev ustrezne obravnave lahko prepreči prezgodnje smrti. Dostop do zdravil za nekomunicirajoče bolezni in osnovnih zdravstvenih tehnologij v vseh osnovnih zdravstvenih ustanovah je ključen, da se zagotovi, da tisti, ki to potrebujejo, prejmejo zdravljenje in svetovanje (WHO n.d.).

Raziskovalno vprašanje: Ali lahko prepoznamo ločene skupine posameznikov na podlagi njihovih parametrov, povezanih z zdravjem srca in ožilja?

V raziskavi sem uporabil metodo razvrščanja, ki nam omogoča združevanje podobnih opazovanj v skupine na podlagi njihovih značilnosti. Z uporabo metode razvrščanja v kontekstu raziskovanja zdravja srca in ožilja lahko identificiramo skupine posameznikov z podobnimi zdravstvenimi profili. Na primer, lahko identificiramo skupine ljudi z podobnimi vrednostmi parametrov, kot so holesterol, krvni tlak, pulz, itd. To nam lahko pomaga pri razumevanju različnih tipov srčno-žilnih profilov v populaciji.

VIR TEORETIČNE OSNOVE: https://www.who.int/health-topics/cardiovascular-diseases#tab=tab_1 VIR PODATKOV ZA ANALIZO: https://www.kaggle.com/datasets/juledz/heart-attack-prediction

podatki <- read.csv("D:/EKONOMSKA FAKULTETA/PROGRAM R/MTRD23_prirpavljalnica/Pripravljalnica/srcni zastoj/heart.csv")
head(podatki)
##   age sex cp trestbps chol fbs restecg thalach exang oldpeak slope ca thal
## 1  52   1  0      125  212   0       1     168     0     1.0     2  2    3
## 2  53   1  0      140  203   1       0     155     1     3.1     0  0    3
## 3  70   1  0      145  174   0       1     125     1     2.6     0  0    3
## 4  61   1  0      148  203   0       1     161     0     0.0     2  1    3
## 5  62   0  0      138  294   1       1     106     0     1.9     1  3    2
## 6  58   0  0      100  248   0       0     122     0     1.0     1  0    2
##   target
## 1   0.23
## 2   0.37
## 3   0.24
## 4   0.28
## 5   0.21
## 6   0.78
colnames(podatki) <- c("Starost", "Spol", "Bolprsnica", "RR", "Holesterol", "Glukoza", "EKG", "Pulz", "Napor", "DeprST", "NaklonST", "Fluoroskopija", "Talasemija", "Napoved")
head(podatki)
##   Starost Spol Bolprsnica  RR Holesterol Glukoza EKG Pulz Napor DeprST NaklonST
## 1      52    1          0 125        212       0   1  168     0    1.0        2
## 2      53    1          0 140        203       1   0  155     1    3.1        0
## 3      70    1          0 145        174       0   1  125     1    2.6        0
## 4      61    1          0 148        203       0   1  161     0    0.0        2
## 5      62    0          0 138        294       1   1  106     0    1.9        1
## 6      58    0          0 100        248       0   0  122     0    1.0        1
##   Fluoroskopija Talasemija Napoved
## 1             2          3    0.23
## 2             0          3    0.37
## 3             0          3    0.24
## 4             1          3    0.28
## 5             3          2    0.21
## 6             0          2    0.78

Razlaga spremenljivk: Starost: v letih Spol: 0: ženske, 1: moški Bolprsnica: vrsta bolečine v prsnici 0: tipična, 1: atipična, 2: neanginalna, 3: asimptomatska RR: krvni tlak v mirovanju - številsko Holesterol: serumski holesterol - številsko Glukoza: kvrni sladkor na tešče 0: <= 120 mg/dL, 1: > 120 mg/dL EKG: Merjenje dejavnosti srca v mirovanju: 0: Normalno, 1: Nenormalno, 2: Hipertrofija Pulz: najvišja vrednost srčnega utripa - številsko Napor: Bolečina ob naporu: 0: Ne, 1: Da DeprST: sprememba ST-spojnice med fizično obremenitvijo in po njej - številsko NaklonST: naklon vrha ST-segmenta med fizičnim naporom - 0: navzgor, 1: raven, 2:navzdol Fluoroskopija: število obarvanih žil - številsko Talasemija: genetska bolezen, ki vpliva na tvorbo hemoglobina, ki se nahaja v eritrocitih in skrbi za prenos kisika po telesu - 0: normalno, 1: fiksna okvara, 2: reverzibilna oblika Napoved: napoved možnosti za srčni napad

podatki1 <- podatki[sample(nrow(podatki), 300),]

Naključno smo izbrali 300 enot iz skupno 1025 enot primarno zajetih v vzorec.

summary(podatki1)
##     Starost           Spol          Bolprsnica         RR       
##  Min.   :29.00   Min.   :0.0000   Min.   :0.00   Min.   :100.0  
##  1st Qu.:47.00   1st Qu.:0.0000   1st Qu.:0.00   1st Qu.:120.0  
##  Median :55.00   Median :1.0000   Median :0.00   Median :130.0  
##  Mean   :54.03   Mean   :0.7233   Mean   :0.92   Mean   :132.9  
##  3rd Qu.:60.25   3rd Qu.:1.0000   3rd Qu.:2.00   3rd Qu.:140.0  
##  Max.   :76.00   Max.   :1.0000   Max.   :3.00   Max.   :192.0  
##    Holesterol       Glukoza            EKG              Pulz      
##  Min.   :131.0   Min.   :0.0000   Min.   :0.0000   Min.   : 71.0  
##  1st Qu.:207.8   1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:131.8  
##  Median :239.5   Median :0.0000   Median :1.0000   Median :151.0  
##  Mean   :242.7   Mean   :0.1533   Mean   :0.5267   Mean   :148.1  
##  3rd Qu.:270.0   3rd Qu.:0.0000   3rd Qu.:1.0000   3rd Qu.:165.0  
##  Max.   :417.0   Max.   :1.0000   Max.   :2.0000   Max.   :202.0  
##      Napor            DeprST         NaklonST     Fluoroskopija    Talasemija  
##  Min.   :0.0000   Min.   :0.000   Min.   :0.000   Min.   :0.00   Min.   :0.00  
##  1st Qu.:0.0000   1st Qu.:0.000   1st Qu.:1.000   1st Qu.:0.00   1st Qu.:2.00  
##  Median :0.0000   Median :0.950   Median :1.000   Median :0.00   Median :2.00  
##  Mean   :0.3633   Mean   :1.152   Mean   :1.347   Mean   :0.75   Mean   :2.36  
##  3rd Qu.:1.0000   3rd Qu.:1.800   3rd Qu.:2.000   3rd Qu.:1.00   3rd Qu.:3.00  
##  Max.   :1.0000   Max.   :6.200   Max.   :2.000   Max.   :4.00   Max.   :3.00  
##     Napoved      
##  Min.   :0.1000  
##  1st Qu.:0.2600  
##  Median :0.3900  
##  Mean   :0.5201  
##  3rd Qu.:0.7900  
##  Max.   :0.9000

Najmlajša oseba zajeta v vzorec je bila stara 29 let, najstarejša pa 77 let.Največ je bilo oseb s starostjo 56. Iz povprečja v spolu lahko razberemo, da je približno 69% moških in 39% žensk zajeto v vzorec. Vrednost 132,0 predstavlja, da je imelo 25% posameznikov zajetih v vzorec srčni utrip do vključno toliko ali manj.

podatki1$Starost_z <- scale(podatki1$Starost)
podatki1$RR_z <- scale(podatki1$RR)
podatki1$Holesterol_z <- scale(podatki1$Holesterol)
podatki1$Pulz_z <- scale(podatki1$Pulz)
podatki1$DeprST_z <- scale(podatki1$DeprST)
podatki1$Talasemija_z <- scale(podatki1$Talasemija)
podatki1$Napoved_z <- scale(podatki1$Napoved)
library(Hmisc)
## Warning: package 'Hmisc' was built under R version 4.3.2
## 
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:base':
## 
##     format.pval, units
rcorr(as.matrix(podatki1[ , c("Starost_z", "RR_z", "Holesterol_z", "Pulz_z", "DeprST_z", "Talasemija_z", "Napoved_z")]),
      type = "pearson")
##              Starost_z  RR_z Holesterol_z Pulz_z DeprST_z Talasemija_z
## Starost_z         1.00  0.29         0.24  -0.38     0.20         0.15
## RR_z              0.29  1.00         0.23  -0.01     0.18         0.05
## Holesterol_z      0.24  0.23         1.00  -0.01    -0.06         0.07
## Pulz_z           -0.38 -0.01        -0.01   1.00    -0.32        -0.09
## DeprST_z          0.20  0.18        -0.06  -0.32     1.00         0.28
## Talasemija_z      0.15  0.05         0.07  -0.09     0.28         1.00
## Napoved_z        -0.27 -0.13        -0.05   0.39    -0.38        -0.37
##              Napoved_z
## Starost_z        -0.27
## RR_z             -0.13
## Holesterol_z     -0.05
## Pulz_z            0.39
## DeprST_z         -0.38
## Talasemija_z     -0.37
## Napoved_z         1.00
## 
## n= 300 
## 
## 
## P
##              Starost_z RR_z   Holesterol_z Pulz_z DeprST_z Talasemija_z
## Starost_z              0.0000 0.0000       0.0000 0.0004   0.0094      
## RR_z         0.0000           0.0000       0.9235 0.0013   0.3542      
## Holesterol_z 0.0000    0.0000              0.8759 0.2860   0.2070      
## Pulz_z       0.0000    0.9235 0.8759              0.0000   0.1125      
## DeprST_z     0.0004    0.0013 0.2860       0.0000          0.0000      
## Talasemija_z 0.0094    0.3542 0.2070       0.1125 0.0000               
## Napoved_z    0.0000    0.0260 0.3858       0.0000 0.0000   0.0000      
##              Napoved_z
## Starost_z    0.0000   
## RR_z         0.0260   
## Holesterol_z 0.3858   
## Pulz_z       0.0000   
## DeprST_z     0.0000   
## Talasemija_z 0.0000   
## Napoved_z

S korelacijsko matriko smo preverili povezave med spremenljivkami. Zaželjeno je, da so čim bližje 0, da so med seboj čim manj povezane. Med starostjo in krvnim pritiskom obstaja majhna pozitivna korelacija.

podatki1$Razlicnost_Z <- sqrt(podatki1$Starost_z^2 + podatki1$RR_z^2 + podatki1$Holesterol_z^2 + podatki1$Pulz_z^2 + podatki1$DeprST_z^2 + podatki1$Talasemija_z^2 + podatki1$Napoved_z^2)
head(podatki1[order(-podatki1$Razlicnost_Z), ], 10)
##     Starost Spol Bolprsnica  RR Holesterol Glukoza EKG Pulz Napor DeprST
## 394      62    0          0 160        164       0   0  145     0    6.2
## 70       62    0          0 160        164       0   0  145     0    6.2
## 890      63    0          0 150        407       0   0  154     0    4.0
## 320      53    0          2 128        216       0   0  115     0    0.0
## 247      54    1          1 192        283       0   0  195     0    0.0
## 56       55    1          0 140        217       0   1  111     1    5.6
## 834      55    1          0 140        217       0   1  111     1    5.6
## 669      29    1          1 130        204       0   0  202     0    0.0
## 687      52    1          0 128        204       1   1  156     1    1.0
## 959      65    0          2 140        417       1   0  157     0    0.8
##     NaklonST Fluoroskopija Talasemija Napoved    Starost_z       RR_z
## 394        0             3          3    0.22  0.899265888  1.4968228
## 70         0             3          3    0.32  0.899265888  1.4968228
## 890        1             3          3    0.19  1.012050071  0.9445576
## 320        2             0          0    0.83 -0.115791762 -0.2704259
## 247        2             1          3    0.20 -0.003007578  3.2640715
## 56         0             0          3    0.35  0.109776605  0.3922924
## 834        0             0          3    0.40  0.109776605  0.3922924
## 669        2             0          2    0.88 -2.822612161 -0.1599728
## 687        1             0          0    0.34 -0.228575945 -0.2704259
## 959        2             1          2    0.81  1.237618438  0.3922924
##     Holesterol_z     Pulz_z   DeprST_z Talasemija_z  Napoved_z Razlicnost_Z
## 394   -1.6187025 -0.1315574  4.0467183     1.049831 -1.0847338     4.933699
## 70    -1.6187025 -0.1315574  4.0467183     1.049831 -0.7233165     4.867024
## 890    3.3820779  0.2541158  2.2830931     1.049831 -1.1931590     4.599755
## 320   -0.5485767 -1.4171349 -0.9234983    -3.871252  1.1199118     4.414679
## 247    0.8302393  2.0110717 -0.9234983     1.049831 -1.1570173     4.322217
## 56    -0.5279973 -1.5885453  3.5657296     1.049831 -0.6148913     4.142809
## 834   -0.5279973 -1.5885453  3.5657296     1.049831 -0.4341827     4.119865
## 669   -0.7955288  2.3110398 -0.9234983    -0.590530  1.3006204     4.106055
## 687   -0.7955288  0.3398210 -0.1218505    -3.871252 -0.6510331     4.037203
## 959    3.5878713  0.3826736 -0.2821800    -0.590530  1.0476283     4.028738
head(as.data.frame(podatki1))
##     Starost Spol Bolprsnica  RR Holesterol Glukoza EKG Pulz Napor DeprST
## 636      53    0          0 130        264       0   0  143     0    0.4
## 854      67    1          0 120        229       0   0  129     1    2.6
## 216      49    1          1 130        266       0   1  171     0    0.6
## 998      54    1          0 120        188       0   1  113     0    1.4
## 288      71    0          1 160        302       0   1  162     0    0.4
## 298      58    1          0 150        270       0   0  111     1    0.8
##     NaklonST Fluoroskopija Talasemija Napoved    Starost_z       RR_z
## 636        1             0          2    0.79 -0.115791762 -0.1599728
## 854        1             2          3    0.26  1.463186805 -0.7122380
## 216        2             0          2    0.84 -0.566928495 -0.1599728
## 998        1             1          3    0.13 -0.003007578 -0.7122380
## 288        2             2          2    0.80  1.914323538  1.4968228
## 298        2             0          3    0.16  0.448129155  0.9445576
##     Holesterol_z     Pulz_z   DeprST_z Talasemija_z  Napoved_z Razlicnost_Z
## 636    0.4392318 -0.2172626 -0.6028392    -0.590530  0.9753449     1.393759
## 854   -0.2810452 -0.8171988  1.1607861     1.049831 -0.9401669     2.593932
## 216    0.4803905  0.9826097 -0.4425096    -0.590530  1.1560535     1.850485
## 998   -1.1247983 -1.5028401  0.1988087     1.049831 -1.4100094     2.675965
## 288    1.2212468  0.5969365 -0.6028392    -0.590530  1.0114866     3.080282
## 298    0.5627078 -1.5885453 -0.2821800     1.049831 -1.3015842     2.609409

Enote 159, 295 in 482 so najbolj različne tako, da so morda kandidati za odstranitev, ker so lahko ali osamelci ali enote z visokim vplivom. Vendar menim, da je iz vsebinskega vidika pomembno, da ostanejo v vzorcu, saj tudi take osebe odražajo določen delež ljudi.

library(factoextra)
## Warning: package 'factoextra' was built under R version 4.3.2
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.3.2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
Razdalje <- get_dist(podatki1[c("Starost_z", "RR_z", "Holesterol_z", "Pulz_z", "DeprST_z", "Talasemija_z", "Napoved_z")], 
                     method = "euclidean")

Razdalje2 <- Razdalje^2

fviz_dist(Razdalje2)

get_clust_tendency(podatki1[c("Starost_z", "RR_z", "Holesterol_z", "Pulz_z", "DeprST_z", "Talasemija_z", "Napoved_z" )],
                   n = nrow(podatki1) -1,
                   graph = FALSE)
## $hopkins_stat
## [1] 0.8045845
## 
## $plot
## NULL

Vrednost Hopkinsove statistike nakazuje na to, da so podatki primerni za razvrstitev v skupine, saj je vrednost nad 0,5 (0.82).

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.2
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:Hmisc':
## 
##     src, summarize
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(factoextra)
library(dplyr)
WARD <- podatki1[c("Starost_z", "RR_z", "Holesterol_z", "Pulz_z", "DeprST_z", "Talasemija_z", "Napoved_z")] %>%
  
get_dist(method = "euclidean") %>%
hclust(method = "ward.D2")

WARD
## 
## Call:
## hclust(d = ., method = "ward.D2")
## 
## Cluster method   : ward.D2 
## Distance         : euclidean 
## Number of objects: 300
library(factoextra)
fviz_dend(WARD)
## Warning: The `<scale>` argument of `guides()` cannot be `FALSE`. Use "none" instead as
## of ggplot2 3.3.4.
## ℹ The deprecated feature was likely used in the factoextra package.
##   Please report the issue at <https://github.com/kassambara/factoextra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

set.seed(123)
library(dplyr)
library(NbClust)
SteviloSkupin <- podatki1[c("Starost_z", "RR_z", "Holesterol_z", "Pulz_z", "DeprST_z", "Talasemija_z", "Napoved_z")] %>%
  
  NbClust(distance= "euclidean",
          min.nc = 2, max.nc = 8,
          method = "ward.D2",
          index = "all")

## *** : The Hubert index is a graphical method of determining the number of clusters.
##                 In the plot of Hubert index, we seek a significant knee that corresponds to a 
##                 significant increase of the value of the measure i.e the significant peak in Hubert
##                 index second differences plot. 
## 

## *** : The D index is a graphical method of determining the number of clusters. 
##                 In the plot of D index, we seek a significant knee (the significant peak in Dindex
##                 second differences plot) that corresponds to a significant increase of the value of
##                 the measure. 
##  
## ******************************************************************* 
## * Among all indices:                                                
## * 6 proposed 2 as the best number of clusters 
## * 6 proposed 3 as the best number of clusters 
## * 4 proposed 4 as the best number of clusters 
## * 7 proposed 8 as the best number of clusters 
## 
##                    ***** Conclusion *****                            
##  
## * According to the majority rule, the best number of clusters is  8 
##  
##  
## *******************************************************************

Glede na podane rezultate jih večina predlaga 2 kot najboljše število skupin. Ker se tudi na podlagi dendrograma vidi, da je dobra možnost tudi 4 skupine in to število skupin potrjujejo tudi kot drugo najboljšo izbiro sem se odločil, da bom v nadaljevanju uporabil 4 skupine.

podatki1$RazvrstitevWARD <- cutree(WARD,
                                   k=4)
head(podatki1)
##     Starost Spol Bolprsnica  RR Holesterol Glukoza EKG Pulz Napor DeprST
## 636      53    0          0 130        264       0   0  143     0    0.4
## 854      67    1          0 120        229       0   0  129     1    2.6
## 216      49    1          1 130        266       0   1  171     0    0.6
## 998      54    1          0 120        188       0   1  113     0    1.4
## 288      71    0          1 160        302       0   1  162     0    0.4
## 298      58    1          0 150        270       0   0  111     1    0.8
##     NaklonST Fluoroskopija Talasemija Napoved    Starost_z       RR_z
## 636        1             0          2    0.79 -0.115791762 -0.1599728
## 854        1             2          3    0.26  1.463186805 -0.7122380
## 216        2             0          2    0.84 -0.566928495 -0.1599728
## 998        1             1          3    0.13 -0.003007578 -0.7122380
## 288        2             2          2    0.80  1.914323538  1.4968228
## 298        2             0          3    0.16  0.448129155  0.9445576
##     Holesterol_z     Pulz_z   DeprST_z Talasemija_z  Napoved_z Razlicnost_Z
## 636    0.4392318 -0.2172626 -0.6028392    -0.590530  0.9753449     1.393759
## 854   -0.2810452 -0.8171988  1.1607861     1.049831 -0.9401669     2.593932
## 216    0.4803905  0.9826097 -0.4425096    -0.590530  1.1560535     1.850485
## 998   -1.1247983 -1.5028401  0.1988087     1.049831 -1.4100094     2.675965
## 288    1.2212468  0.5969365 -0.6028392    -0.590530  1.0114866     3.080282
## 298    0.5627078 -1.5885453 -0.2821800     1.049831 -1.3015842     2.609409
##     RazvrstitevWARD
## 636               1
## 854               2
## 216               1
## 998               2
## 288               3
## 298               2
Zac_Voditelji <- aggregate (podatki1[, c("Starost_z", "RR_z", "Holesterol_z", "Pulz_z", "DeprST_z", "Talasemija_z", "Napoved_z")],
                            by = list(podatki1$RazvrstitevWARD),
                            FUN = mean)

Zac_Voditelji
##   Group.1    Starost_z        RR_z Holesterol_z     Pulz_z     DeprST_z
## 1       1 -0.455169622 -0.24030231  -0.32856480  0.4150078 -0.460000108
## 2       2  0.266111117  0.03578059  -0.13087715 -0.8710827  0.804409957
## 3       3  0.742823311  1.55561232   1.42239331  0.2651746  0.002275645
## 4       4  0.002826086 -0.43800979   0.09080221  0.5880704 -0.529585152
##   Talasemija_z   Napoved_z
## 1   -0.7098290  0.97633054
## 2    0.3514596 -0.90438301
## 3    0.2561080  0.09395296
## 4    0.5973177 -0.32700374
library(factoextra)
MetodaVod <- hkmeans(podatki1[c("Starost_z", "RR_z", "Holesterol_z", "Pulz_z", "DeprST_z", "Talasemija_z", "Napoved_z")],
                     k = 4,
                     hc.metric = "euclidean",
                     hc.method = "ward.D2")

MetodaVod
## Hierarchical K-means clustering with 4 clusters of sizes 103, 70, 59, 68
## 
## Cluster means:
##     Starost_z         RR_z Holesterol_z       Pulz_z      DeprST_z Talasemija_z
## 1 -0.77388200 -0.284366538  -0.34458145  0.571141731 -0.4884292436   -0.7179367
## 2  0.49968764  0.001761989  -0.26634570 -0.984323846  1.1035255178    0.7217589
## 3  0.81133246  1.347055963   0.94604171  0.005716099 -0.0009239331   -0.1456863
## 4 -0.04613094 -0.739851288  -0.02471135  0.143203252 -0.3953538543    0.4708801
##     Napoved_z
## 1  0.94165936
## 2 -0.85342675
## 3 -0.04397448
## 4 -0.50965511
## 
## Clustering vector:
##  636  854  216  998  288  298  248  779  669  960  673  368  596  415  708  982 
##    1    2    1    2    3    2    2    4    1    3    4    4    4    3    3    4 
##  389  688  988  740  979  978  342  756  622   95  121  701  727  746   96  420 
##    2    4    3    4    4    1    1    1    4    1    4    1    4    1    1    3 
##  249   41  908  104  128  500  171  440  603  663  282   33   50  811  419  674 
##    1    3    1    1    1    1    1    4    1    1    1    2    4    2    1    4 
##  804   67  466  627  720  617  258  843  969  907  589    5  175  125  842  270 
##    4    1    1    2    4    1    3    4    2    1    3    2    2    2    1    4 
##  858  259  606  458  921  278  434  783  195  922  654  470  729  343  468  548 
##    1    4    4    1    4    1    1    3    3    2    2    3    2    3    4    4 
##  222  897  718  366  951  111  386   70  301  167  576  928  505  239  600  789 
##    2    3    4    1    3    4    1    2    1    2    1    1    4    4    1    2 
##    8  140  132  655 1018  875  165  336   31  966  435   80   82  118  995  583 
##    3    1    1    1    2    3    4    2    1    3    1    1    4    2    4    1 
##  675  799  321  905  816  641  478  819  250  577  144   20  315  265  757  150 
##    2    3    1    1    4    1    4    1    1    3    1    1    1    3    2    1 
##   36   79  308  767  101  786  370 1025  532  841  968  829  628  952  464   88 
##    2    1    1    2    1    3    1    2    3    2    1    1    4    2    4    3 
##  126  260  501  682   57  428  228  247  608  517  297  540  392  408   25  680 
##    3    3    2    3    4    1    1    3    1    2    2    3    4    4    1    3 
##  814  537  610 1016  365   52  345  529   54  692  781   30 1003  221  255  504 
##    2    1    3    2    4    4    1    3    2    1    1    3    4    4    4    1 
##  707  397  213  769  538  573  728  269  534  719    3  822  955   56  356   42 
##    4    3    2    4    1    1    4    2    1    1    2    3    1    2    1    4 
##  890  402   78  508  105  635   98  382  475  289  503  437  293  373  412  311 
##    3    2    2    1    1    4    2    2    4    1    1    3    3    1    4    2 
##  892  760  933  823  106  480  332  996  103  469   37  225  889  666  109  715 
##    3    3    3    4    4    2    4    1    4    3    1    1    2    3    4    1 
##  136  607  261  863  926  324  226  634  909  580   43  184   66   97  881  949 
##    3    4    1    3    2    3    3    2    2    2    3    1    3    1    1    2 
##  888  566  743  181  652   75  661  153  439  878  750  787  917 1020  514  693 
##    1    1    2    2    1    4    2    4    1    1    4    4    2    1    4    2 
##   72  896   14  768  894  993   47  328  598 1023  149  303  196  556  394  320 
##    2    2    2    2    1    1    1    3    1    4    3    3    1    4    2    1 
##  323  862  631  141  646   76  795  902  243  160  351   10  498  947  233    4 
##    4    3    4    2    2    1    2    1    1    1    3    2    3    3    2    4 
##  186  850  879  834  251  154  316  959  353  230  687  455 
##    3    4    2    2    4    4    1    3    2    3    1    2 
## 
## Within cluster sum of squares by cluster:
## [1] 348.7511 311.7182 323.2193 279.2730
##  (between_SS / total_SS =  39.7 %)
## 
## Available components:
## 
##  [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
##  [6] "betweenss"    "size"         "iter"         "ifault"       "data"        
## [11] "hclust"
fviz_cluster(MetodaVod,
             palette = "jama",
             repel = FALSE,
             ggtheme = theme_classic())

podatki1$RazvrstitevVod <- MetodaVod$cluster
head(podatki1[c("Spol", "RazvrstitevWARD", "RazvrstitevVod")])
##     Spol RazvrstitevWARD RazvrstitevVod
## 636    0               1              1
## 854    1               2              2
## 216    1               1              1
## 998    1               2              2
## 288    0               3              3
## 298    1               2              2
table(podatki1$RazvrstitevWARD)
## 
##   1   2   3   4 
## 110 101  31  58
table(podatki1$RazvrstitevVod)
## 
##   1   2   3   4 
## 103  70  59  68
table(podatki1$RazvrstitevWARD, podatki1$RazvrstitevVod)
##    
##      1  2  3  4
##   1 92  2 12  4
##   2  3 68 12 18
##   3  4  0 27  0
##   4  4  0  8 46

Ugotavljamo, da se je z Wardovim algoritmom 49 posameznikov razvrstilo v skupino 4. Z metodo voditeljev pa se je v isto skupino razvrstilo 42 posameznikov.

Povprecja <- MetodaVod$centers
Povprecja
##     Starost_z         RR_z Holesterol_z       Pulz_z      DeprST_z Talasemija_z
## 1 -0.77388200 -0.284366538  -0.34458145  0.571141731 -0.4884292436   -0.7179367
## 2  0.49968764  0.001761989  -0.26634570 -0.984323846  1.1035255178    0.7217589
## 3  0.81133246  1.347055963   0.94604171  0.005716099 -0.0009239331   -0.1456863
## 4 -0.04613094 -0.739851288  -0.02471135  0.143203252 -0.3953538543    0.4708801
##     Napoved_z
## 1  0.94165936
## 2 -0.85342675
## 3 -0.04397448
## 4 -0.50965511
library(ggplot2)
library(tidyr)
## Warning: package 'tidyr' was built under R version 4.3.2
Slika <- as.data.frame(Povprecja)
Slika$Spol <- 1:nrow(Slika)
Slika <- pivot_longer(Slika, cols = c("Starost_z", "RR_z", "Holesterol_z", "Pulz_z", "DeprST_z", "Talasemija_z", "Napoved_z"))

Slika$Skupina <- factor(Slika$Spol,
                        levels = c(1, 2, 3, 4),
                        labels = c("1", "2", "3","4"))
                        
Slika$nameFactor <- factor(Slika$name,
                           levels = c("Starost_z", "RR_z", "Holesterol_z", "Pulz_z", "DeprST_z", "Talasemija_z", "Napoved_z"),
                           labels = c ("Starost_z", "RR_z", "Holesterol_z", "Pulz_z", "DeprST_z", "Talasemija_z", "Napoved_z"))

ggplot(Slika, aes(x = nameFactor, y = value)) +
  geom_hline(yintercept = 0) +
  theme_bw() +
  geom_point(aes(shape = Skupina, col = Skupina), size=4) +
  geom_line(aes(group = Spol), linewidth = 1) +
  ylab("Povprecje") +
  xlab("Razvrstitvene spremenljivke") +
  ylim(-1.5, 1.5)

Ugotovitev: 5 od 7 meritvenih spremenljivk v skupini 1 in 3 je nad povprečjem. V skupini 2 in 4 so samo 2 merjene spremenljivke nad povprečjem. Holesterol je v povprečju najvišji v skupini 3. V povprečju so najmlajši posamezniki v skupini 2.

fit<- aov(cbind(Starost_z, RR_z, Holesterol_z, Pulz_z, DeprST_z, Talasemija_z, Napoved_z) ~ as.factor(RazvrstitevVod),
          data = podatki1)

summary(fit)
##  Response 1 :
##                            Df Sum Sq Mean Sq F value    Pr(>F)    
## as.factor(RazvrstitevVod)   3 118.15  39.382  64.456 < 2.2e-16 ***
## Residuals                 296 180.85   0.611                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response 2 :
##                            Df Sum Sq Mean Sq F value    Pr(>F)    
## as.factor(RazvrstitevVod)   3 152.61  50.870  102.86 < 2.2e-16 ***
## Residuals                 296 146.39   0.495                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response 3 :
##                            Df  Sum Sq Mean Sq F value    Pr(>F)    
## as.factor(RazvrstitevVod)   3  70.042 23.3473  30.184 < 2.2e-16 ***
## Residuals                 296 228.958  0.7735                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response 4 :
##                            Df Sum Sq Mean Sq F value    Pr(>F)    
## as.factor(RazvrstitevVod)   3 102.82  34.273  51.711 < 2.2e-16 ***
## Residuals                 296 196.18   0.663                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response 5 :
##                            Df Sum Sq Mean Sq F value    Pr(>F)    
## as.factor(RazvrstitevVod)   3 120.44  40.148  66.556 < 2.2e-16 ***
## Residuals                 296 178.56   0.603                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response 6 :
##                            Df Sum Sq Mean Sq F value    Pr(>F)    
## as.factor(RazvrstitevVod)   3 105.89  35.295  54.099 < 2.2e-16 ***
## Residuals                 296 193.12   0.652                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response 7 :
##                            Df Sum Sq Mean Sq F value    Pr(>F)    
## as.factor(RazvrstitevVod)   3 160.09  53.364  113.72 < 2.2e-16 ***
## Residuals                 296 138.91   0.469                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Uporabil sem analizo variance (ANOVA), da bi ugotovil, ali so vse spremenljivke učinkovito razdelile enote v skupine. P-vrednost mi je sporočila, da lahko zavrnem predpostavko enakih povprečij za te spremenljivke; dejansko so se bistveno razlikovale med seboj - njihove razlike so rasle sorazmerno njihovi statistični pomembnosti v ANOVI.Najmanjšo statistično razliko lahko zaznamo v odzivu 2, pa še v tem primeru znaša p-vrednost 0,03114, kar je manjše od 0,05 tako, da je vseeno še statistično značilno.

hi_kvadrat <- chisq.test(podatki1$Spol, as.factor(podatki1$RazvrstitevVod))
hi_kvadrat
## 
##  Pearson's Chi-squared test
## 
## data:  podatki1$Spol and as.factor(podatki1$RazvrstitevVod)
## X-squared = 33.636, df = 3, p-value = 2.365e-07

Na podlagi rezultatov hi-kvadrat testa in p-vrednosti (< 0,001) ugotavljamo, da imamo dovolj dokazov za zavrnitev ničelne hipoteze. Torej, lahko sklepamo, da obstaja statistično pomembna povezava med razvrstitvijo in spolom.

addmargins(hi_kvadrat$observed)
##              
## podatki1$Spol   1   2   3   4 Sum
##           0    37  10  29   7  83
##           1    66  60  30  61 217
##           Sum 103  70  59  68 300
addmargins(round(hi_kvadrat$expected, 2))
##              
## podatki1$Spol     1     2     3     4 Sum
##           0    28.5 19.37 16.32 18.81  83
##           1    74.5 50.63 42.68 49.19 217
##           Sum 103.0 70.00 59.00 68.00 300
round(hi_kvadrat$res, 2)
##              
## podatki1$Spol     1     2     3     4
##             0  1.59 -2.13  3.14 -2.72
##             1 -0.99  1.32 -1.94  1.68

Na podlagi standardiziranih ostankov ugotavljamo, da obstaja razlika v empiričnih in pričakovanih frekvencah pri obeh spolih oz. kategorijah 0 in 1.

library(effectsize)
## Warning: package 'effectsize' was built under R version 4.3.2
effectsize::cramers_v(podatki1$Spol, as.factor(podatki1$RazvrstitevVod))
## Cramer's V (adj.) |       95% CI
## --------------------------------
## 0.32              | [0.20, 1.00]
## 
## - One-sided CIs: upper bound fixed at [1.00].

Vrednost Cramerjevega V se giblje med 0 in 1, kjer večja vrednost označuje močnejšo povezanost. V našem primeru je rezultat 0.33, kar nakazuje na srednje močno povezanost. Če je vrednost blizu 0, povezanost ni močna, medtem ko vrednosti bližje 1 kažejo na močnejšo povezanost.

Ugotovitve: Razversitev 300 posameznikov smo izvedli na 7 standardiziranih spremenljivkah. Pri hierarhičnem razvrščanju smo uporabili Wardov združevalni algoritem ter se na podlagi analize dendrograma odločili za razvrstitev v 4 skupine. Razvrstitev smo še dodatno optimizirali z metodo voditeljev.

V skupino 1 je uvrščenih največ dijakov (33%), za njih pa je značično, da je nadpovprečna vrednost večine razvrstitvenih spremelnjivk. Podpovprečna vrednost je le pri vrednosti utripa (Pulz_z) in pri napovedi.

Odgovor na raziskovalno vprašanje: Posameznike lahko na podlagi meritev v povezavi z srčno-žilnim stanjem razdelimo v različne skupine.