Mündəricat:

1. Hipotez Testi (ədədi orta üçün 𝜎 naməlum olduqda)

2. Populyasiyanın Nisbəti Üçün Hipotez Testi

3. İki Populyasiyanın Ədədi Ortaları Arasındakı Fərq Üçün Hipotez Testi (asılı olmayan nümunələr).

4. İki Populyasiyanın Nisbəti Üçün Hipotez Testi

5. Etibarlı İntervallar II, Hipotez Testləri II (asılı nümunələr)

6. Anova testi

7. Korelyasiya testi

1. Hipotez Testi (ədədi orta üçün 𝜎 naməlum olduqda).

Məsələ:

Universitet rəhbərliyi bir semestr ərzində tələbələrin dərs materiallarına orta hesabla nə qədər xərclərinin çıxdığını öyrənmək istəyir. Bu məqsədlə təsadüfi olaraq 100 tələbə seçilib və onların dərs materiallarına xərcləri soruşularaq qeyd edilmişdir. Seçilən tələbələr üçün dərs materiallarına çəkilən xərclərin ədədi ortası 315,4 manat, standart meyletmə isə 43,2 manat olmuşdur. Bu məlumatlara əsasən orta hesabla bir tələbənin semestr ərzində dərs materiallarına 300 manatdan çox xərcinin çıxdığı qənaətinə gəlmək üçün kifayət qədər əsas varmı? Əhəmiyyətlilik dərəcəsi 0.1-dir.

H0: mu <= 300

H1: mu > 300

1) Datanın hazır hala gətirilməsi:


#1 Datanın qurulması;
a <- rnorm(100, mean = 315.4, sd = 43.2)

#2 Datanın statistik qiymətləri;
library(funModeling)
profiling_num(a)
NA

2) Nümunənin normal paylanıb paylanmamasının yoxlanması:


#1 Datanın vizual görünüşü;
hist(a)


#2 Q-Q plot;
library(ggpubr)
package 㤼㸱ggpubr㤼㸲 was built under R version 4.0.3
ggqqplot(a)


#3 Shapiro-Wilks;
shapiro.test(a)

    Shapiro-Wilk normality test

data:  a
W = 0.98788, p-value = 0.4993

3) Etibarlı interval və Hipotez testi:


t.test(a, mu = 300, alternative = "greater", conf.level = 0.99)

    One Sample t-test

data:  a
t = 3.0497, df = 99, p-value = 0.001469
alternative hypothesis: true mean is greater than 300
99 percent confidence interval:
 303.0057      Inf
sample estimates:
mean of x 
 313.3792 

4) Alternativ funksiya:


library(inferr)
package 㤼㸱inferr㤼㸲 was built under R version 4.0.3
df <- data.frame(a)
infer_os_t_test(df, a, mu = 300, type = all)
                               One-Sample Statistics                                
-----------------------------------------------------------------------------------
 Variable    Obs      Mean      Std. Err.    Std. Dev.    [95% Conf. Interval] 
-----------------------------------------------------------------------------------
    a        100    313.3792      4.387       43.8701      304.6756   322.0851  
-----------------------------------------------------------------------------------

                                  Two Tail Test                                  
                                 ---------------                                  

                                Ho: mean(a) ~=300                                
                                Ha: mean(a) !=300                                 
--------------------------------------------------------------------------------
 Variable     t      DF      Sig       Mean Diff.    [95% Conf. Interval] 
--------------------------------------------------------------------------------
    a        3.05    99    0.99853      13.3792        4.6756      22.0851   
--------------------------------------------------------------------------------

5) Normal olmayan paylanma üçün test:


library(DescTools)
SignTest(df$a, mu = 300)

    One-sample Sign-Test

data:  df$a
S = 61, number of differences = 100, p-value = 0.0352
alternative hypothesis: true median is not equal to 300
96.5 percent confidence interval:
 301.2929 320.6618
sample estimates:
median of the differences 
                 310.0481 

6) Testin nəticəsi:

Hipotez testinin nəticəsinə görə populyasiyanın ortalaması 99% etibarlılıqla 300-dən böyükdür. Bununla da H0 hipotezi rədd olunur.

2. Populyasiyanın Nisbəti Üçün Hipotez Testi.

Məsələ:

Çay istehsalı ilə məşğul olan şirkət rəhbərliyi keçən ilki təcrübəyə əsasən bilir ki, istehsal olunan çay qutularının 88%-ində çəki normasına riayət olunur. Bu il şirkət qoyulan standartlara riayət olunma faizini artırmaq üçün istehsal xəttində ciddi dəyişikliklər edib. Görülən işlərin nəticəyə təsir edib-etməməsini yoxlamaq üçün təsadüfi olaraq 100 çay qutusu götürülüb. Kütlələri çəkildikdən sonra məlum olub ki, bunlardan 92-si normaya uyğun doldurulmuşdur. 0.01 əhəmiyyətlilik dərəcəsi üçün, görülən tədbirlər planının doldurulma standartlarında artışa səbəb olduğu nəticəsinə gəlmək üçün kifayət qədər əsas varmı?

H0: p =< 0.88

H1: p > 0.88

1) Hiotez testi:


prop.test(x = 92, n = 100, p = 0.88, 
          alternative = "greater", conf.level = 0.01)

    1-sample proportions test with continuity correction

data:  92 out of 100, null probability 0.88
X-squared = 1.16, df = 1, p-value = 0.1407
alternative hypothesis: true p is greater than 0.88
1 percent confidence interval:
 0.9603793 1.0000000
sample estimates:
   p 
0.92 

2) Nəticə:

Edilən test nəticəsində 99% etibarlılıqla demək olar ki, populyasiyanın nisbəti 0.88-dən böyükdür. Beləliklə H0 hipotezi rədd edilir.

3. İki Populyasiyanın Ədədi Ortaları Arasındakı Fərq Üçün Hipotez Testi (asılı olmayan nümunələr).

Məsələ:

Telefon xətti ilə bağlı problemlər həm müştərilərin, həm də telefon şirkətinin işinə mane olur.iki ofisə daxil olan şikayətlər və onların aradan qaldırılma vaxtı (dəqiqə ilə) göstərilib:

1) Datanın qurulması:


#1. Datanın qurulması;
two_samples_data <- data.frame(
  A = c(1.48, 1.75, 0.78, 2.85, 0.52, 1.60, 4.15, 3.97, 1.48, 3.10, 
        1.02, 0.53, 0.93, 1.60, 0.80, 1.05, 6.32, 3.93, 5.45, 0.97),
  
  B = c(7.55, 3.75, 0.10, 1.10, 0.60, 0.52, 3.30, 2.10, 0.58, 4.02, 
        3.75, 0.65, 1.92, 0.60, 1.53, 4.23, 0.08, 1.48, 1.65, 0.72)
)

View(two_samples_data)

#2. Datanın statistik qiymətləri;
library(funModeling)
profiling_num(two_samples_data)

#3. İki asılı olmayan dataları vizual şəkildə göstərmək üçün ayrı ayrı dataların qurulub yeni data frame-də birləşdirilməsi;
A <- data.frame(numbers = two_samples_data$A, category = "A")
B <- data.frame(numbers = two_samples_data$B, category = "B")
AB <- rbind(A, B)

#4. Yeni qurulan datanın vizual görünüşü;
library(tidyverse)
Registered S3 methods overwritten by 'dbplyr':
  method         from
  print.tbl_lazy     
  print.tbl_sql      
-- Attaching packages --------------------------------- tidyverse 1.3.0 --
v tibble  3.0.3     v dplyr   1.0.2
v tidyr   1.1.2     v stringr 1.4.0
v readr   1.4.0     v forcats 0.5.0
v purrr   0.3.4     
-- Conflicts ------------------------------------ tidyverse_conflicts() --
x dplyr::filter()    masks stats::filter()
x dplyr::lag()       masks stats::lag()
x dplyr::src()       masks Hmisc::src()
x dplyr::summarize() masks Hmisc::summarize()
ggplot(AB, aes(category, numbers, fill = category)) +
  geom_boxplot()

2) Nümunələrin normal paylanıb paylanmamasının yoxlanması:


#1. Vizual 1;
ggplot(AB, aes(numbers, fill = category)) +
  geom_histogram(color = "black", binwidth = 5, alpha = 0.5) +
  facet_grid(category ~.)


#2. Vizual 2;
ggplot(AB, aes(numbers, fill = category)) +
  geom_histogram(aes(y = ..density..), 
                 color = "black", binwidth = 5, alpha = 0.5) +
  geom_density(alpha = 0.3) +
  facet_grid(category ~.)


#3. Numerik test;
apply(two_samples_data, 2, shapiro.test)
$A

    Shapiro-Wilk normality test

data:  newX[, i]
W = 0.84482, p-value = 0.00437


$B

    Shapiro-Wilk normality test

data:  newX[, i]
W = 0.84249, p-value = 0.004
AB[AB$category == "A",]$numbers
 [1] 1.48 1.75 0.78 2.85 0.52 1.60 4.15 3.97 1.48 3.10 1.02 0.53 0.93 1.60
[15] 0.80 1.05 6.32 3.93 5.45 0.97
shapiro.test(AB[AB$category == "A",]$numbers)

    Shapiro-Wilk normality test

data:  AB[AB$category == "A", ]$numbers
W = 0.84482, p-value = 0.00437
AB[AB$category == "B",]$numbers
 [1] 7.55 3.75 0.10 1.10 0.60 0.52 3.30 2.10 0.58 4.02 3.75 0.65 1.92 0.60
[15] 1.53 4.23 0.08 1.48 1.65 0.72
shapiro.test(AB[AB$category == "B",]$numbers)

    Shapiro-Wilk normality test

data:  AB[AB$category == "B", ]$numbers
W = 0.84249, p-value = 0.004

3) Dispersiyalarn yoxlanması:

leveneTest(AB$numbers ~ AB$category, center = mean)
group coerced to factor.
Levene's Test for Homogeneity of Variance (center = mean)
      Df F value Pr(>F)
group  1  0.0113 0.9159
      38               

4) Hipotez testi:


t.test(AB$numbers ~ AB$category, var.equal = T)

    Two Sample t-test

data:  AB$numbers by AB$category
t = 0.35439, df = 38, p-value = 0.725
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -0.9542608  1.3592608
sample estimates:
mean in group A mean in group B 
         2.2140          2.0115 

5) Alternativ funksiya:


library(inferr)
infer_ts_ind_ttest(data = AB, x = category, y = numbers)

6) Normal olmayan paylanma üçün Mann - Whitney U testi:


wilcox.test(two_samples_data$A, two_samples_data$B)
cannot compute exact p-value with ties

    Wilcoxon rank sum test with continuity correction

data:  two_samples_data$A and two_samples_data$B
W = 224.5, p-value = 0.5161
alternative hypothesis: true location shift is not equal to 0

7) Nəticə:

Aparılan test nəticəsində 95 % ehtimalla demək olar ki, 2 qrup arasında nəzərə çarpacaq qədər fərq yoxdur. Belə olduqda H0 hipotezi qəbul olunur.

4. İki Populyasiyanın Nisbəti Üçün Hipotez Testi

Məsələ:

Müxtəlif yaş qruplarından olan insanlar xəbərləri hansı vasitələrdən alırlar? Aparılmış müşahidədə telefon vasitəsilə xəbərlərin izlənməsi araşdırılır. Müşahidə vasitəsilə müəyyənləşdirilib ki, 50 yaşdan kiçiklərin 47%-i, 50 yaş və üzərində olanların isə 15%-i xəbərləri telefon vasitəsilə öyrənir. 50 yaşdan kiçik 1000 nəfərlə aparılan sorğuda iştirak edənlərdən 470 nəfəri, 50 və daha çox yaşı olan 891 nəfər arasında aparılan sorğuda isə 134 nəfəri xəbərləri telefon vasitəsilə öyrəndiklərini deyiblər.

H0: p1 - p2 = 0

H1: p1 - p2 != 0

1) a. Əvvəldə deyilən iki qrup insan arasında xəbərləri telefon vasitəsilə öyrənənlərin nisbətləri arasında əhəmiyyətli dərəcədə fərq varmı? (𝛼 = 0.05 istifadə edin)

b. İki qrupun sözü gedən nisbətləri arasındakı fərq üçün 95%-li etibarlı interval qurun.


prop.test(x = c(470, 134), n = c(1000, 871))

    2-sample test for equality of proportions with continuity
    correction

data:  c(470, 134) out of c(1000, 871)
X-squared = 211.41, df = 1, p-value < 2.2e-16
alternative hypothesis: two.sided
95 percent confidence interval:
 0.2759513 0.3563564
sample estimates:
   prop 1    prop 2 
0.4700000 0.1538462 

Nəticə:

2 asılı olmayan nümunələr arasında ciddi fərq vardır. Bununla da H0 hipotezi rədd olunur.

5. Etibarlı İntervallar II, Hipotez Testləri II (asılı nümunələr)

Məsələ:

Qandakı mikro hissəciklərin sıxlığı faylında xərçəng xəstəliyinə tutulan insanlarda gövdə hüceyrələri köçürdükdən əvvəl və sonra qandakı mikro hissəciklərin sıxlığı verilib.

1. Datanın istifadəyə hazır hala gətirilməsi


#1 Datanın qurulması;
evvel <- c(158,189,202,353,416,426,441)
sonra <- c(284,214,101,227,290,176,290)

A <- data.frame(ortalama = evvel, evvel_sonra = "evvel")
B <- data.frame(ortalama = sonra, evvel_sonra = "sonra")
df <- rbind(A,B)

#2 Datanın statistik qiymətləri;
df %>% 
  dplyr::group_by(evvel_sonra) %>% 
  dplyr::summarise(mean(ortalama), sd(ortalama), var(ortalama))
`summarise()` ungrouping output (override with `.groups` argument)
#3 Datanın vizual görünüşü;
library(tidyverse)
ggplot(df, aes(evvel_sonra, ortalama)) +
  geom_boxplot()

2. a ve c.

a) Əhəmiyyətlilik dərəcəsi 0.05 olmaqla müalicədən sonra xəstələrdə mikro hissəciklərin sıxlığının azaldığını demək olarmı?

a = 0.05

c) Xəstələrdəki mikrohissəciklər arasındakı fərq üçün 95%-li etibarlı interval qurun:

1 - a = 0.95


t.test(df$ortalama ~ df$evvel_sonra, paired = T)

    Paired t-test

data:  df$ortalama by df$evvel_sonra
t = 1.8425, df = 6, p-value = 0.115
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -28.26101 200.54672
sample estimates:
mean of the differences 
               86.14286 

3. b) (a) bəndi üçün 𝑝 − 𝑞𝑖𝑦𝑚ə𝑡𝑖𝑛𝑖 tapın və mənasını izah edin.


apply(data.frame(evvel, sonra), 2, shapiro.test)
$evvel

    Shapiro-Wilk normality test

data:  newX[, i]
W = 0.83244, p-value = 0.08438


$sonra

    Shapiro-Wilk normality test

data:  newX[, i]
W = 0.88197, p-value = 0.2354

4. d) (a) bəndindəki test üçün hansı fərziyyə qəbul olunmalıdır?


shapiro.test(A[A$evvel_sonra == "evvel",]$ortalama)

    Shapiro-Wilk normality test

data:  A[A$evvel_sonra == "evvel", ]$ortalama
W = 0.83244, p-value = 0.08438

5) Alternativ funksiya

df1 <- data.frame(evvel, sonra)
infer_ts_paired_ttest(df1, x = evvel, y = sonra)
                          Paired Samples Statistics                            
------------------------------------------------------------------------------
Variables    Obs      Mean      Std. Err.    Std. Dev.    [95% Conf. Interval] 
------------------------------------------------------------------------------
   evvel       7     312.1429    47.07614     124.5518       196.95     427.34  
   sonra       7      226.00     26.64851     70.50532       160.79     291.21   
------------------------------------------------------------------------------
   diff        7     86.14286    46.75439     123.7005       -28.27     200.55   
------------------------------------------------------------------------------

         Paired Samples Correlations          
--------------------------------------------
   Variables      Obs    Correlation    Sig.
 evvel & sonra     7        0.30        0.52 
--------------------------------------------

          Paired Samples Test           
          -------------------           
      Ho: mean(evvel - sonra) = 0       
     Ha: mean(evvel - sonra) ~= 0       

---------------------------------------
   Variables        t       df    Sig.  
---------------------------------------
 evvel - sonra    1.8425    6    0.115 
---------------------------------------

6) Normal olmayan paylanma üçün Wilcoxon-Sign Rank testi


wilcox.test(df1$evvel, df1$sonra, paired = T)
cannot compute exact p-value with ties

    Wilcoxon signed rank test with continuity correction

data:  df1$evvel and df1$sonra
V = 23, p-value = 0.1479
alternative hypothesis: true location shift is not equal to 0

7) Nəticə:

Hipotez testinin nəticəsinə görə 2 asılı nümunə arasında fərq vardır. Bununla da H0 hipotezi rədd olunur.

6. Anova testi

H0: mu1 = mu2 = mu3

H1: mu1 != mu2 != mu3

1) Datanın qurulması:


#1. Dataların qurulması;
A <- c(28,33,30,29,28,29,27,31,30,32,28,33,25,29,27,31,31,30,31,34,30,32,31,34,28,32,31,28,33,29)

B <- c(31,32,30,30,33,32,34,27,36,30,31,30,38,29,30,34,34,31,35,35,33,30,28,29,26,37,31,28,34,33)

C <- c(40,33,38,41,42,43,38,35,39,39,36,34,35,40,38,36,39,36,33,35,38,35,40,40,39,38,38,43,40,42)

#2. Qurulmuş dataların yeni bir data frame-də birləşdirilməsi;
A <- data.frame(vaxt = A, grup = "A")
B <- data.frame(vaxt = B, grup = "B")
C <- data.frame(vaxt = C, grup = "C")
df <- rbind(A,B,C)

#3. Statistik qiymətlər;
df %>% 
  group_by(grup) %>% 
  summarise(mean(vaxt), median(vaxt), sd(vaxt))
`summarise()` ungrouping output (override with `.groups` argument)
#4. Datanın vizual görünüşü;
library(tidyverse)
ggplot(df, aes(grup, vaxt, fill = grup)) +
  geom_boxplot()

2) Paylanmanın yoxlanması:


shapiro.test(df[df$grup == "A",]$vaxt)

    Shapiro-Wilk normality test

data:  df[df$grup == "A", ]$vaxt
W = 0.96974, p-value = 0.5322
shapiro.test(df[df$grup == "B",]$vaxt)

    Shapiro-Wilk normality test

data:  df[df$grup == "B", ]$vaxt
W = 0.97899, p-value = 0.798
shapiro.test(df[df$grup == "C",]$vaxt)

    Shapiro-Wilk normality test

data:  df[df$grup == "C", ]$vaxt
W = 0.95792, p-value = 0.2738

3) Dispersiyaların yoxlanması:

bartlett.test(vaxt ~ grup, data = df)

    Bartlett test of homogeneity of variances

data:  vaxt by grup
Bartlett's K-squared = 2.4009, df = 2, p-value = 0.3011
leveneTest(vaxt ~ grup, data = df)
group coerced to factor.
Levene's Test for Homogeneity of Variance (center = median)
      Df F value Pr(>F)
group  2  1.0267 0.3625
      87               

4) Hipotez testi:


aov(vaxt ~ grup, data = df)
Call:
   aov(formula = vaxt ~ grup, data = df)

Terms:
                     grup Residuals
Sum of Squares  1068.8222  622.4667
Deg. of Freedom         2        87

Residual standard error: 2.674844
Estimated effects may be unbalanced
summary(aov(vaxt ~ grup, data = df))
            Df Sum Sq Mean Sq F value Pr(>F)    
grup         2 1068.8   534.4   74.69 <2e-16 ***
Residuals   87  622.5     7.2                   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

5) İkili qarşılaşdırma:


TukeyHSD(aov(vaxt ~ grup, data = df))
  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = vaxt ~ grup, data = df)

$grup
        diff         lwr      upr     p adj
B-A 1.566667 -0.08015436 3.213488 0.0657253
C-A 7.966667  6.31984564 9.613488 0.0000000
C-B 6.400000  4.75317897 8.046821 0.0000000

6) Alternativ funksiya:

infer_oneway_anova(df, vaxt, grup)
                               ANOVA                                 
--------------------------------------------------------------------
                   Sum of                                           
                  Squares     DF    Mean Square      F        Sig.  
--------------------------------------------------------------------
Between Groups    1068.822    2       534.411      74.691    0.0000 
Within Groups     622.467     87       7.155                        
Total             1691.289    89                                    
--------------------------------------------------------------------

                     Report                      
------------------------------------------------
    Category        N       Mean      Std. Dev. 
------------------------------------------------
       A            30     30.133       2.224   
       B            30     31.700       2.938   
       C            30     38.100       2.808   
------------------------------------------------

Number of obs = 90        R-squared     = 0.632 
Root MSE      = 2.6748    Adj R-squared = 0.6235 

7) Normal olmayan paylanma üçün Kruskal-Wallis testi:


kruskal.test(vaxt ~ grup, data = df)

    Kruskal-Wallis rank sum test

data:  vaxt by grup
Kruskal-Wallis chi-squared = 54.198, df = 2, p-value = 1.702e-12

Nəticə:

Populyasidan seçilmiş nümunələrin hipotez testinin nəticəsinə görə nümunələrin ortalamaları arasında ciddi fərq vardır. Nəticədə H0 hipotezi atılır.

7. Korelyasiya testi

1) Datanın mənimsədilməsi:


#1 Datanın təyin olunması;
df <- mtcars
head(df)

#2 İki dəyişən arasında korelyasiyanın hesablanması;
library(ggpubr)
ggscatter(df, x = "mpg", y = "wt", 
          add = "reg.line", 
          conf.int = T, 
          cor.coef = T, 
          cor.method = "pearson")

2) Dəyişənlərin normal paylanıb paylanmamasının yoxlanması:


shapiro.test(df$mpg)

    Shapiro-Wilk normality test

data:  df$mpg
W = 0.94756, p-value = 0.1229
shapiro.test(df$wt)

    Shapiro-Wilk normality test

data:  df$wt
W = 0.94326, p-value = 0.09265

3) Hipotez testi və test statistikası:


cor.test(df$mpg, df$wt, method = "pearson")

    Pearson's product-moment correlation

data:  df$mpg and df$wt
t = -9.559, df = 30, p-value = 1.294e-10
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.9338264 -0.7440872
sample estimates:
       cor 
-0.8676594 

4) Normal olmayan paylanma üçün hipotez testi:


cor.test(df$mpg, df$wt, method = "spearman")
Cannot compute exact p-value with ties

    Spearman's rank correlation rho

data:  df$mpg and df$wt
S = 10292, p-value = 1.488e-11
alternative hypothesis: true rho is not equal to 0
sample estimates:
      rho 
-0.886422 
cor.test(df$mpg, df$wt, method = "kendall")
Cannot compute exact p-value with ties

    Kendall's rank correlation tau

data:  df$mpg and df$wt
z = -5.7981, p-value = 6.706e-09
alternative hypothesis: true tau is not equal to 0
sample estimates:
       tau 
-0.7278321 

5) Korelyasiya matrisləri:


#1 Bütün dəyişənlərin korelyasiyası;
cor(df)
            mpg        cyl       disp         hp        drat         wt
mpg   1.0000000 -0.8521620 -0.8475514 -0.7761684  0.68117191 -0.8676594
cyl  -0.8521620  1.0000000  0.9020329  0.8324475 -0.69993811  0.7824958
disp -0.8475514  0.9020329  1.0000000  0.7909486 -0.71021393  0.8879799
hp   -0.7761684  0.8324475  0.7909486  1.0000000 -0.44875912  0.6587479
drat  0.6811719 -0.6999381 -0.7102139 -0.4487591  1.00000000 -0.7124406
wt   -0.8676594  0.7824958  0.8879799  0.6587479 -0.71244065  1.0000000
qsec  0.4186840 -0.5912421 -0.4336979 -0.7082234  0.09120476 -0.1747159
vs    0.6640389 -0.8108118 -0.7104159 -0.7230967  0.44027846 -0.5549157
am    0.5998324 -0.5226070 -0.5912270 -0.2432043  0.71271113 -0.6924953
gear  0.4802848 -0.4926866 -0.5555692 -0.1257043  0.69961013 -0.5832870
carb -0.5509251  0.5269883  0.3949769  0.7498125 -0.09078980  0.4276059
            qsec         vs          am       gear        carb
mpg   0.41868403  0.6640389  0.59983243  0.4802848 -0.55092507
cyl  -0.59124207 -0.8108118 -0.52260705 -0.4926866  0.52698829
disp -0.43369788 -0.7104159 -0.59122704 -0.5555692  0.39497686
hp   -0.70822339 -0.7230967 -0.24320426 -0.1257043  0.74981247
drat  0.09120476  0.4402785  0.71271113  0.6996101 -0.09078980
wt   -0.17471588 -0.5549157 -0.69249526 -0.5832870  0.42760594
qsec  1.00000000  0.7445354 -0.22986086 -0.2126822 -0.65624923
vs    0.74453544  1.0000000  0.16834512  0.2060233 -0.56960714
am   -0.22986086  0.1683451  1.00000000  0.7940588  0.05753435
gear -0.21268223  0.2060233  0.79405876  1.0000000  0.27407284
carb -0.65624923 -0.5696071  0.05753435  0.2740728  1.00000000
#2 Yalnız dəyərləri mövcud olanlar arasında korelyasiya;
cor(df, use = "complete.obs")
            mpg        cyl       disp         hp        drat         wt
mpg   1.0000000 -0.8521620 -0.8475514 -0.7761684  0.68117191 -0.8676594
cyl  -0.8521620  1.0000000  0.9020329  0.8324475 -0.69993811  0.7824958
disp -0.8475514  0.9020329  1.0000000  0.7909486 -0.71021393  0.8879799
hp   -0.7761684  0.8324475  0.7909486  1.0000000 -0.44875912  0.6587479
drat  0.6811719 -0.6999381 -0.7102139 -0.4487591  1.00000000 -0.7124406
wt   -0.8676594  0.7824958  0.8879799  0.6587479 -0.71244065  1.0000000
qsec  0.4186840 -0.5912421 -0.4336979 -0.7082234  0.09120476 -0.1747159
vs    0.6640389 -0.8108118 -0.7104159 -0.7230967  0.44027846 -0.5549157
am    0.5998324 -0.5226070 -0.5912270 -0.2432043  0.71271113 -0.6924953
gear  0.4802848 -0.4926866 -0.5555692 -0.1257043  0.69961013 -0.5832870
carb -0.5509251  0.5269883  0.3949769  0.7498125 -0.09078980  0.4276059
            qsec         vs          am       gear        carb
mpg   0.41868403  0.6640389  0.59983243  0.4802848 -0.55092507
cyl  -0.59124207 -0.8108118 -0.52260705 -0.4926866  0.52698829
disp -0.43369788 -0.7104159 -0.59122704 -0.5555692  0.39497686
hp   -0.70822339 -0.7230967 -0.24320426 -0.1257043  0.74981247
drat  0.09120476  0.4402785  0.71271113  0.6996101 -0.09078980
wt   -0.17471588 -0.5549157 -0.69249526 -0.5832870  0.42760594
qsec  1.00000000  0.7445354 -0.22986086 -0.2126822 -0.65624923
vs    0.74453544  1.0000000  0.16834512  0.2060233 -0.56960714
am   -0.22986086  0.1683451  1.00000000  0.7940588  0.05753435
gear -0.21268223  0.2060233  0.79405876  1.0000000  0.27407284
carb -0.65624923 -0.5696071  0.05753435  0.2740728  1.00000000
#3 Korelyasiya ilə yanaşı p-qiymətinin hesablanması;
library(Hmisc)
rcorr(as.matrix(df))
       mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
mpg   1.00 -0.85 -0.85 -0.78  0.68 -0.87  0.42  0.66  0.60  0.48 -0.55
cyl  -0.85  1.00  0.90  0.83 -0.70  0.78 -0.59 -0.81 -0.52 -0.49  0.53
disp -0.85  0.90  1.00  0.79 -0.71  0.89 -0.43 -0.71 -0.59 -0.56  0.39
hp   -0.78  0.83  0.79  1.00 -0.45  0.66 -0.71 -0.72 -0.24 -0.13  0.75
drat  0.68 -0.70 -0.71 -0.45  1.00 -0.71  0.09  0.44  0.71  0.70 -0.09
wt   -0.87  0.78  0.89  0.66 -0.71  1.00 -0.17 -0.55 -0.69 -0.58  0.43
qsec  0.42 -0.59 -0.43 -0.71  0.09 -0.17  1.00  0.74 -0.23 -0.21 -0.66
vs    0.66 -0.81 -0.71 -0.72  0.44 -0.55  0.74  1.00  0.17  0.21 -0.57
am    0.60 -0.52 -0.59 -0.24  0.71 -0.69 -0.23  0.17  1.00  0.79  0.06
gear  0.48 -0.49 -0.56 -0.13  0.70 -0.58 -0.21  0.21  0.79  1.00  0.27
carb -0.55  0.53  0.39  0.75 -0.09  0.43 -0.66 -0.57  0.06  0.27  1.00

n= 32 


P
     mpg    cyl    disp   hp     drat   wt     qsec   vs     am    
mpg         0.0000 0.0000 0.0000 0.0000 0.0000 0.0171 0.0000 0.0003
cyl  0.0000        0.0000 0.0000 0.0000 0.0000 0.0004 0.0000 0.0022
disp 0.0000 0.0000        0.0000 0.0000 0.0000 0.0131 0.0000 0.0004
hp   0.0000 0.0000 0.0000        0.0100 0.0000 0.0000 0.0000 0.1798
drat 0.0000 0.0000 0.0000 0.0100        0.0000 0.6196 0.0117 0.0000
wt   0.0000 0.0000 0.0000 0.0000 0.0000        0.3389 0.0010 0.0000
qsec 0.0171 0.0004 0.0131 0.0000 0.6196 0.3389        0.0000 0.2057
vs   0.0000 0.0000 0.0000 0.0000 0.0117 0.0010 0.0000        0.3570
am   0.0003 0.0022 0.0004 0.1798 0.0000 0.0000 0.2057 0.3570       
gear 0.0054 0.0042 0.0010 0.4930 0.0000 0.0005 0.2425 0.2579 0.0000
carb 0.0011 0.0019 0.0253 0.0000 0.6212 0.0146 0.0000 0.0007 0.7545
     gear   carb  
mpg  0.0054 0.0011
cyl  0.0042 0.0019
disp 0.0010 0.0253
hp   0.4930 0.0000
drat 0.0000 0.6212
wt   0.0005 0.0146
qsec 0.2425 0.0000
vs   0.2579 0.0007
am   0.0000 0.7545
gear        0.1290
carb 0.1290       

6) Advanced Korelyasiya matrisi:


library(PerformanceAnalytics)
Loading required package: xts
Loading required package: zoo

Attaching package: 㤼㸱zoo㤼㸲

The following objects are masked from 㤼㸱package:base㤼㸲:

    as.Date, as.Date.numeric


Attaching package: 㤼㸱xts㤼㸲

The following objects are masked from 㤼㸱package:dplyr㤼㸲:

    first, last


Attaching package: 㤼㸱PerformanceAnalytics㤼㸲

The following object is masked from 㤼㸱package:graphics㤼㸲:

    legend
df <- mtcars[, c(1,3,4,5,6,7)]
chart.Correlation(df, histogram = T, pch = 19)

LS0tDQp0aXRsZTogIlIgaWzJmSBTdGF0aXN0aWthIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KDQoNCg0KIyBNw7xuZMmZcmljYXQ6DQojIyAxLiBIaXBvdGV6IFRlc3RpICjJmWTJmWRpIG9ydGEgw7zDp8O8biDwnZyOIG5hbcmZbHVtIG9sZHVxZGEpDQojIyAyLiBQb3B1bHlhc2l5YW7EsW4gTmlzYsmZdGkgw5zDp8O8biBIaXBvdGV6IFRlc3RpDQojIyAzLiDEsGtpIFBvcHVseWFzaXlhbsSxbiDGj2TJmWRpIE9ydGFsYXLEsSBBcmFzxLFuZGFrxLEgRsmZcnEgw5zDp8O8biBIaXBvdGV6IFRlc3RpIChhc8SxbMSxIG9sbWF5YW4gbsO8bXVuyZlsyZlyKS4NCiMjIDQuIMSwa2kgUG9wdWx5YXNpeWFuxLFuIE5pc2LJmXRpIMOcw6fDvG4gSGlwb3RleiBUZXN0aQ0KIyMgNS4gRXRpYmFybMSxIMSwbnRlcnZhbGxhciBJSSwgSGlwb3RleiBUZXN0bMmZcmkgSUkgKGFzxLFsxLEgbsO8bXVuyZlsyZlyKQ0KIyMgNi4gQW5vdmEgdGVzdGkNCiMjIDcuIEtvcmVseWFzaXlhIHRlc3RpDQoNCiMjIDEuIEhpcG90ZXogVGVzdGkgKMmZZMmZZGkgb3J0YSDDvMOnw7xuIPCdnI4gbmFtyZlsdW0gb2xkdXFkYSkuDQojIyMgTcmZc8mZbMmZOg0KIyMjIFVuaXZlcnNpdGV0IHLJmWhiyZlybGl5aSBiaXIgc2VtZXN0ciDJmXJ6aW5kyZkgdMmZbMmZYsmZbMmZcmluIGTJmXJzIG1hdGVyaWFsbGFyxLFuYSBvcnRhIGhlc2FibGEgbsmZIHHJmWTJmXIgeMmZcmNsyZlyaW5pbiDDp8SxeGTEscSfxLFuxLEgw7Z5csmZbm3JmWsgaXN0yZl5aXIuIEJ1IG3JmXFzyZlkbMmZIHTJmXNhZMO8Zmkgb2xhcmFxIDEwMCB0yZlsyZliyZkgc2XDp2lsaWIgdsmZIG9ubGFyxLFuIGTJmXJzIG1hdGVyaWFsbGFyxLFuYSB4yZlyY2zJmXJpIHNvcnXFn3VsYXJhcSBxZXlkIGVkaWxtacWfZGlyLiBTZcOnaWzJmW4gdMmZbMmZYsmZbMmZciDDvMOnw7xuIGTJmXJzIG1hdGVyaWFsbGFyxLFuYSDDp8mZa2lsyZluIHjJmXJjbMmZcmluIMmZZMmZZGkgb3J0YXPEsSAzMTUsNCBtYW5hdCwgc3RhbmRhcnQgbWV5bGV0bcmZIGlzyZkgNDMsMiBtYW5hdCBvbG11xZ9kdXIuIEJ1IG3JmWx1bWF0bGFyYSDJmXNhc8mZbiBvcnRhIGhlc2FibGEgYmlyIHTJmWzJmWLJmW5pbiBzZW1lc3RyIMmZcnppbmTJmSBkyZlycyBtYXRlcmlhbGxhcsSxbmEgMzAwIG1hbmF0ZGFuIMOnb3ggeMmZcmNpbmluIMOnxLF4ZMSxxJ/EsSBxyZluYcmZdGluyZkgZ8mZbG3JmWsgw7zDp8O8biBraWZhecmZdCBxyZlkyZlyIMmZc2FzIHZhcm3EsT8gxo9oyZltaXl5yZl0bGlsaWsgZMmZcsmZY8mZc2kgMC4xLWRpci4NCg0KIyMjIEgwOiBtdSA8PSAzMDANCiMjIyBIMTogbXUgPiAgMzAwDQoNCiMjIyAxKSBEYXRhbsSxbiBoYXrEsXIgaGFsYSBnyZl0aXJpbG3JmXNpOg0KDQpgYGB7cn0NCg0KIzEgRGF0YW7EsW4gcXVydWxtYXPEsTsNCmEgPC0gcm5vcm0oMTAwLCBtZWFuID0gMzE1LjQsIHNkID0gNDMuMikNCg0KIzIgRGF0YW7EsW4gc3RhdGlzdGlrIHFpeW3JmXRsyZlyaTsNCmxpYnJhcnkoZnVuTW9kZWxpbmcpDQpwcm9maWxpbmdfbnVtKGEpDQoNCmBgYA0KDQojIyMgMikgTsO8bXVuyZluaW4gbm9ybWFsIHBheWxhbsSxYiBwYXlsYW5tYW1hc8SxbsSxbiB5b3hsYW5tYXPEsToNCg0KYGBge3J9DQoNCiMxIERhdGFuxLFuIHZpenVhbCBnw7Zyw7xuw7zFn8O8Ow0KaGlzdChhKQ0KDQojMiBRLVEgcGxvdDsNCmxpYnJhcnkoZ2dwdWJyKQ0KZ2dxcXBsb3QoYSkNCg0KIzMgU2hhcGlyby1XaWxrczsNCnNoYXBpcm8udGVzdChhKQ0KDQpgYGANCg0KIyMjIDMpIEV0aWJhcmzEsSBpbnRlcnZhbCB2yZkgSGlwb3RleiB0ZXN0aToNCg0KYGBge3J9DQoNCnQudGVzdChhLCBtdSA9IDMwMCwgYWx0ZXJuYXRpdmUgPSAiZ3JlYXRlciIsIGNvbmYubGV2ZWwgPSAwLjk5KQ0KDQpgYGANCg0KIyMjIDQpIEFsdGVybmF0aXYgZnVua3NpeWE6DQoNCmBgYHtyfQ0KDQpsaWJyYXJ5KGluZmVycikNCmRmIDwtIGRhdGEuZnJhbWUoYSkNCmluZmVyX29zX3RfdGVzdChkZiwgYSwgbXUgPSAzMDAsIHR5cGUgPSBhbGwpDQoNCmBgYA0KDQojIyMgNSkgTm9ybWFsIG9sbWF5YW4gcGF5bGFubWEgw7zDp8O8biB0ZXN0Og0KDQpgYGB7cn0NCg0KbGlicmFyeShEZXNjVG9vbHMpDQpTaWduVGVzdChkZiRhLCBtdSA9IDMwMCkNCg0KYGBgDQoNCiMjIyA2KSBUZXN0aW4gbsmZdGljyZlzaToNCiMjIyBIaXBvdGV6IHRlc3RpbmluIG7JmXRpY8mZc2luyZkgZ8O2csmZIHBvcHVseWFzaXlhbsSxbiBvcnRhbGFtYXPEsSA5OSUgZXRpYmFybMSxbMSxcWxhIDMwMC1kyZluIGLDtnnDvGtkw7xyLiBCdW51bmxhIGRhIEgwIGhpcG90ZXppIHLJmWRkIG9sdW51ci4NCg0KDQojIyAyLiBQb3B1bHlhc2l5YW7EsW4gTmlzYsmZdGkgw5zDp8O8biBIaXBvdGV6IFRlc3RpLg0KIyMjIE3JmXPJmWzJmToNCiMjIyDDh2F5IGlzdGVoc2FsxLEgaWzJmSBtyZnFn8SfdWwgb2xhbiDFn2lya8mZdCByyZloYsmZcmxpeWkga2XDp8mZbiBpbGtpIHTJmWNyw7xiyZl5yZkgyZlzYXPJmW4gYmlsaXIga2ksIGlzdGVoc2FsIG9sdW5hbiDDp2F5IHF1dHVsYXLEsW7EsW4gODglLWluZMmZIMOnyZlraSBub3JtYXPEsW5hIHJpYXnJmXQgb2x1bnVyLiBCdSBpbCDFn2lya8mZdCBxb3l1bGFuIHN0YW5kYXJ0bGFyYSByaWF5yZl0IG9sdW5tYSBmYWl6aW5pIGFydMSxcm1hcSDDvMOnw7xuIGlzdGVoc2FsIHjJmXR0aW5kyZkgY2lkZGkgZMmZeWnFn2lrbGlrbMmZciBlZGliLiBHw7Zyw7xsyZluIGnFn2zJmXJpbiBuyZl0aWPJmXnJmSB0yZlzaXIgZWRpYi1ldG3JmW3JmXNpbmkgeW94bGFtYXEgw7zDp8O8biB0yZlzYWTDvGZpIG9sYXJhcSAxMDAgw6dheSBxdXR1c3UgZ8O2dMO8csO8bMO8Yi4gS8O8dGzJmWzJmXJpIMOnyZlraWxkaWtkyZluIHNvbnJhIG3JmWx1bSBvbHViIGtpLCBidW5sYXJkYW4gOTItc2kgbm9ybWF5YSB1ecSfdW4gZG9sZHVydWxtdcWfZHVyLiAwLjAxIMmZaMmZbWl5ecmZdGxpbGlrIGTJmXLJmWPJmXNpIMO8w6fDvG4sIGfDtnLDvGzJmW4gdMmZZGJpcmzJmXIgcGxhbsSxbsSxbiBkb2xkdXJ1bG1hIHN0YW5kYXJ0bGFyxLFuZGEgYXJ0xLHFn2Egc8mZYsmZYiBvbGR1xJ91IG7JmXRpY8mZc2luyZkgZ8mZbG3JmWsgw7zDp8O8biBraWZhecmZdCBxyZlkyZlyIMmZc2FzIHZhcm3EsT8NCg0KIyMjIEgwOiBwID08IDAuODgNCiMjIyBIMTogcCA+ICAwLjg4DQoNCiMjIyAxKSBIaW90ZXogdGVzdGk6DQoNCmBgYHtyfQ0KDQpwcm9wLnRlc3QoeCA9IDkyLCBuID0gMTAwLCBwID0gMC44OCwgDQogICAgICAgICAgYWx0ZXJuYXRpdmUgPSAiZ3JlYXRlciIsIGNvbmYubGV2ZWwgPSAwLjAxKQ0KDQpgYGANCg0KIyMjIDIpIE7JmXRpY8mZOg0KIyMjIEVkaWzJmW4gdGVzdCBuyZl0aWPJmXNpbmTJmSA5OSUgZXRpYmFybMSxbMSxcWxhIGRlbcmZayBvbGFyIGtpLCBwb3B1bHlhc2l5YW7EsW4gbmlzYsmZdGkgMC44OC1kyZluIGLDtnnDvGtkw7xyLiBCZWzJmWxpa2zJmSBIMCBoaXBvdGV6aSByyZlkZCBlZGlsaXIuDQoNCg0KIyMgMy4gxLBraSBQb3B1bHlhc2l5YW7EsW4gxo9kyZlkaSBPcnRhbGFyxLEgQXJhc8SxbmRha8SxIEbJmXJxIMOcw6fDvG4gSGlwb3RleiBUZXN0aSAoYXPEsWzEsSBvbG1heWFuIG7DvG11bsmZbMmZcikuDQojIyMgTcmZc8mZbMmZOg0KIyMjIFRlbGVmb24geMmZdHRpIGlsyZkgYmHEn2zEsSBwcm9ibGVtbMmZciBoyZltIG3DvMWfdMmZcmlsyZlyaW4sIGjJmW0gZMmZIHRlbGVmb24gxZ9pcmvJmXRpbmluIGnFn2luyZkgbWFuZSBvbHVyLmlraSBvZmlzyZkgZGF4aWwgb2xhbiDFn2lrYXnJmXRsyZlyIHbJmSBvbmxhcsSxbiBhcmFkYW4gcWFsZMSxcsSxbG1hIHZheHTEsSAoZMmZcWlxyZkgaWzJmSkgZ8O2c3TJmXJpbGliOg0KDQojIyMgMSkgRGF0YW7EsW4gcXVydWxtYXPEsToNCg0KYGBge3J9DQoNCiMxLiBEYXRhbsSxbiBxdXJ1bG1hc8SxOw0KdHdvX3NhbXBsZXNfZGF0YSA8LSBkYXRhLmZyYW1lKA0KICBBID0gYygxLjQ4LCAxLjc1LCAwLjc4LCAyLjg1LCAwLjUyLCAxLjYwLCA0LjE1LCAzLjk3LCAxLjQ4LCAzLjEwLCANCiAgICAgICAgMS4wMiwgMC41MywgMC45MywgMS42MCwgMC44MCwgMS4wNSwgNi4zMiwgMy45MywgNS40NSwgMC45NyksDQogIA0KICBCID0gYyg3LjU1LCAzLjc1LCAwLjEwLCAxLjEwLCAwLjYwLCAwLjUyLCAzLjMwLCAyLjEwLCAwLjU4LCA0LjAyLCANCiAgICAgICAgMy43NSwgMC42NSwgMS45MiwgMC42MCwgMS41MywgNC4yMywgMC4wOCwgMS40OCwgMS42NSwgMC43MikNCikNCg0KVmlldyh0d29fc2FtcGxlc19kYXRhKQ0KDQojMi4gRGF0YW7EsW4gc3RhdGlzdGlrIHFpeW3JmXRsyZlyaTsNCmxpYnJhcnkoZnVuTW9kZWxpbmcpDQpwcm9maWxpbmdfbnVtKHR3b19zYW1wbGVzX2RhdGEpDQoNCiMzLiDEsGtpIGFzxLFsxLEgb2xtYXlhbiBkYXRhbGFyxLEgdml6dWFsIMWfyZlraWxkyZkgZ8O2c3TJmXJtyZlrIMO8w6fDvG4gYXlyxLEgYXlyxLEgZGF0YWxhcsSxbiBxdXJ1bHViIHllbmkgZGF0YSBmcmFtZS1kyZkgYmlybMmZxZ9kaXJpbG3JmXNpOw0KQSA8LSBkYXRhLmZyYW1lKG51bWJlcnMgPSB0d29fc2FtcGxlc19kYXRhJEEsIGNhdGVnb3J5ID0gIkEiKQ0KQiA8LSBkYXRhLmZyYW1lKG51bWJlcnMgPSB0d29fc2FtcGxlc19kYXRhJEIsIGNhdGVnb3J5ID0gIkIiKQ0KQUIgPC0gcmJpbmQoQSwgQikNCg0KIzQuIFllbmkgcXVydWxhbiBkYXRhbsSxbiB2aXp1YWwgZ8O2csO8bsO8xZ/DvDsNCmxpYnJhcnkodGlkeXZlcnNlKQ0KZ2dwbG90KEFCLCBhZXMoY2F0ZWdvcnksIG51bWJlcnMsIGZpbGwgPSBjYXRlZ29yeSkpICsNCiAgZ2VvbV9ib3hwbG90KCkNCg0KYGBgDQoNCiMjIyAyKSBOw7xtdW7JmWzJmXJpbiBub3JtYWwgcGF5bGFuxLFiIHBheWxhbm1hbWFzxLFuxLFuIHlveGxhbm1hc8SxOg0KDQpgYGB7cn0NCg0KIzEuIFZpenVhbCAxOw0KZ2dwbG90KEFCLCBhZXMobnVtYmVycywgZmlsbCA9IGNhdGVnb3J5KSkgKw0KICBnZW9tX2hpc3RvZ3JhbShjb2xvciA9ICJibGFjayIsIGJpbndpZHRoID0gNSwgYWxwaGEgPSAwLjUpICsNCiAgZmFjZXRfZ3JpZChjYXRlZ29yeSB+LikNCg0KIzIuIFZpenVhbCAyOw0KZ2dwbG90KEFCLCBhZXMobnVtYmVycywgZmlsbCA9IGNhdGVnb3J5KSkgKw0KICBnZW9tX2hpc3RvZ3JhbShhZXMoeSA9IC4uZGVuc2l0eS4uKSwgDQogICAgICAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwgYmlud2lkdGggPSA1LCBhbHBoYSA9IDAuNSkgKw0KICBnZW9tX2RlbnNpdHkoYWxwaGEgPSAwLjMpICsNCiAgZmFjZXRfZ3JpZChjYXRlZ29yeSB+LikNCg0KIzMuIE51bWVyaWsgdGVzdDsNCmFwcGx5KHR3b19zYW1wbGVzX2RhdGEsIDIsIHNoYXBpcm8udGVzdCkNCg0KQUJbQUIkY2F0ZWdvcnkgPT0gIkEiLF0kbnVtYmVycw0Kc2hhcGlyby50ZXN0KEFCW0FCJGNhdGVnb3J5ID09ICJBIixdJG51bWJlcnMpDQoNCkFCW0FCJGNhdGVnb3J5ID09ICJCIixdJG51bWJlcnMNCnNoYXBpcm8udGVzdChBQltBQiRjYXRlZ29yeSA9PSAiQiIsXSRudW1iZXJzKQ0KDQpgYGANCg0KIyMjIDMpIERpc3BlcnNpeWFsYXJuIHlveGxhbm1hc8SxOg0KDQpgYGB7cn0NCg0KbGlicmFyeShjYXIpDQpsZXZlbmVUZXN0KEFCJG51bWJlcnMgfiBBQiRjYXRlZ29yeSwgY2VudGVyID0gbWVhbikNCg0KYGBgDQoNCiMjIyA0KSBIaXBvdGV6IHRlc3RpOg0KDQpgYGB7cn0NCg0KdC50ZXN0KEFCJG51bWJlcnMgfiBBQiRjYXRlZ29yeSwgdmFyLmVxdWFsID0gVCkNCg0KYGBgDQoNCiMjIyA1KSBBbHRlcm5hdGl2IGZ1bmtzaXlhOg0KDQpgYGB7cn0NCg0KbGlicmFyeShpbmZlcnIpDQppbmZlcl90c19pbmRfdHRlc3QoZGF0YSA9IEFCLCB4ID0gY2F0ZWdvcnksIHkgPSBudW1iZXJzKQ0KDQpgYGANCg0KIyMjIDYpIE5vcm1hbCBvbG1heWFuIHBheWxhbm1hIMO8w6fDvG4gTWFubiAtIFdoaXRuZXkgVSB0ZXN0aToNCg0KYGBge3J9DQoNCndpbGNveC50ZXN0KHR3b19zYW1wbGVzX2RhdGEkQSwgdHdvX3NhbXBsZXNfZGF0YSRCKQ0KDQpgYGANCg0KIyMjIDcpIE7JmXRpY8mZOg0KIyMjIEFwYXLEsWxhbiB0ZXN0IG7JmXRpY8mZc2luZMmZIDk1ICUgZWh0aW1hbGxhIGRlbcmZayBvbGFyIGtpLCAyIHFydXAgYXJhc8SxbmRhIG7JmXrJmXLJmSDDp2FycGFjYXEgccmZZMmZciBmyZlycSB5b3hkdXIuIEJlbMmZIG9sZHVxZGEgSDAgaGlwb3RlemkgccmZYnVsIG9sdW51ci4NCg0KDQojIyA0LiDEsGtpIFBvcHVseWFzaXlhbsSxbiBOaXNiyZl0aSDDnMOnw7xuIEhpcG90ZXogVGVzdGkNCiMjIyBNyZlzyZlsyZk6DQojIyMgTcO8eHTJmWxpZiB5YcWfIHFydXBsYXLEsW5kYW4gb2xhbiBpbnNhbmxhciB4yZliyZlybMmZcmkgaGFuc8SxIHZhc2l0yZlsyZlyZMmZbiBhbMSxcmxhcj8gQXBhcsSxbG3EscWfIG3DvMWfYWhpZMmZZMmZIHRlbGVmb24gdmFzaXTJmXNpbMmZIHjJmWLJmXJsyZlyaW4gaXpsyZlubcmZc2kgYXJhxZ9kxLFyxLFsxLFyLiBNw7zFn2FoaWTJmSB2YXNpdMmZc2lsyZkgbcO8yZl5ecmZbmzJmcWfZGlyaWxpYiBraSwgNTAgeWHFn2RhbiBracOnaWtsyZlyaW4gNDclLWksIDUwIHlhxZ8gdsmZIMO8esmZcmluZMmZIG9sYW5sYXLEsW4gaXPJmSAxNSUtaSB4yZliyZlybMmZcmkgdGVsZWZvbiB2YXNpdMmZc2lsyZkgw7Z5csmZbmlyLiA1MCB5YcWfZGFuIGtpw6dpayAxMDAwIG7JmWbJmXJsyZkgYXBhcsSxbGFuIHNvcsSfdWRhIGnFn3RpcmFrIGVkyZlubMmZcmTJmW4gNDcwIG7JmWbJmXJpLCA1MCB2yZkgZGFoYSDDp294IHlhxZ/EsSBvbGFuIDg5MSBuyZlmyZlyIGFyYXPEsW5kYSBhcGFyxLFsYW4gc29yxJ91ZGEgaXPJmSAxMzQgbsmZZsmZcmkgeMmZYsmZcmzJmXJpIHRlbGVmb24gdmFzaXTJmXNpbMmZIMO2eXLJmW5kaWtsyZlyaW5pIGRleWlibMmZci4NCg0KIyMjIEgwOiBwMSAtIHAyICA9IDANCiMjIyBIMTogcDEgLSBwMiAhPSAwDQoNCiMjIyAxKSBhLiDGj3Z2yZlsZMmZIGRleWlsyZluIGlraSBxcnVwIGluc2FuIGFyYXPEsW5kYSB4yZliyZlybMmZcmkgdGVsZWZvbiB2YXNpdMmZc2lsyZkgw7Z5csmZbsmZbmzJmXJpbiBuaXNiyZl0bMmZcmkgYXJhc8SxbmRhIMmZaMmZbWl5ecmZdGxpIGTJmXLJmWPJmWTJmSBmyZlycSB2YXJtxLE/ICjwnZu8ID0gMC4wNSBpc3RpZmFkyZkgZWRpbikNCg0KIyMjIGIuIMSwa2kgcXJ1cHVuIHPDtnrDvCBnZWTJmW4gbmlzYsmZdGzJmXJpIGFyYXPEsW5kYWvEsSBmyZlycSDDvMOnw7xuIDk1JS1saSBldGliYXJsxLEgaW50ZXJ2YWwgcXVydW4uDQoNCmBgYHtyfQ0KDQpwcm9wLnRlc3QoeCA9IGMoNDcwLCAxMzQpLCBuID0gYygxMDAwLCA4NzEpKQ0KDQpgYGANCg0KIyMjIE7JmXRpY8mZOg0KIyMjIDIgYXPEsWzEsSBvbG1heWFuIG7DvG11bsmZbMmZciBhcmFzxLFuZGEgY2lkZGkgZsmZcnEgdmFyZMSxci4gQnVudW5sYSBkYSBIMCBoaXBvdGV6aSByyZlkZCBvbHVudXIuDQoNCg0KIyMgNS4gRXRpYmFybMSxIMSwbnRlcnZhbGxhciBJSSwgSGlwb3RleiBUZXN0bMmZcmkgSUkgKGFzxLFsxLEgbsO8bXVuyZlsyZlyKQ0KIyMjIE3JmXPJmWzJmToNCiMjIyBRYW5kYWvEsSBtaWtybyBoaXNzyZljaWtsyZlyaW4gc8SxeGzEscSfxLEgZmF5bMSxbmRhIHjJmXLDp8mZbmcgeMmZc3TJmWxpeWluyZkgdHV0dWxhbiBpbnNhbmxhcmRhIGfDtnZkyZkgaMO8Y2V5csmZbMmZcmkga8O2w6fDvHJkw7xrZMmZbiDJmXZ2yZlsIHbJmSBzb25yYSBxYW5kYWvEsSBtaWtybyBoaXNzyZljaWtsyZlyaW4gc8SxeGzEscSfxLEgdmVyaWxpYi4NCg0KIyMjIDEuIERhdGFuxLFuIGlzdGlmYWTJmXnJmSBoYXrEsXIgaGFsYSBnyZl0aXJpbG3JmXNpDQoNCmBgYHtyfQ0KDQojMSBEYXRhbsSxbiBxdXJ1bG1hc8SxOw0KZXZ2ZWwgPC0gYygxNTgsMTg5LDIwMiwzNTMsNDE2LDQyNiw0NDEpDQpzb25yYSA8LSBjKDI4NCwyMTQsMTAxLDIyNywyOTAsMTc2LDI5MCkNCg0KQSA8LSBkYXRhLmZyYW1lKG9ydGFsYW1hID0gZXZ2ZWwsIGV2dmVsX3NvbnJhID0gImV2dmVsIikNCkIgPC0gZGF0YS5mcmFtZShvcnRhbGFtYSA9IHNvbnJhLCBldnZlbF9zb25yYSA9ICJzb25yYSIpDQpkZiA8LSByYmluZChBLEIpDQoNCiMyIERhdGFuxLFuIHN0YXRpc3RpayBxaXltyZl0bMmZcmk7DQpkZiAlPiUgDQogIGRwbHlyOjpncm91cF9ieShldnZlbF9zb25yYSkgJT4lIA0KICBkcGx5cjo6c3VtbWFyaXNlKG1lYW4ob3J0YWxhbWEpLCBzZChvcnRhbGFtYSksIHZhcihvcnRhbGFtYSkpDQoNCiMzIERhdGFuxLFuIHZpenVhbCBnw7Zyw7xuw7zFn8O8Ow0KbGlicmFyeSh0aWR5dmVyc2UpDQpnZ3Bsb3QoZGYsIGFlcyhldnZlbF9zb25yYSwgb3J0YWxhbWEpKSArDQogIGdlb21fYm94cGxvdCgpDQoNCmBgYA0KDQojIyMgMi4gYSB2ZSBjLg0KDQojIyMgYSkgxo9oyZltaXl5yZl0bGlsaWsgZMmZcsmZY8mZc2kgMC4wNSBvbG1hcWxhIG3DvGFsaWPJmWTJmW4gc29ucmEgeMmZc3TJmWzJmXJkyZkgbWlrcm8gaGlzc8mZY2lrbMmZcmluIHPEsXhsxLHEn8SxbsSxbiBhemFsZMSxxJ/EsW7EsSBkZW3JmWsgb2xhcm3EsT8NCiMjIyBhID0gMC4wNQ0KDQojIyMgYykgWMmZc3TJmWzJmXJkyZlraSBtaWtyb2hpc3PJmWNpa2zJmXIgYXJhc8SxbmRha8SxIGbJmXJxIMO8w6fDvG4gOTUlLWxpIGV0aWJhcmzEsSBpbnRlcnZhbCBxdXJ1bjoNCiMjIyAxIC0gYSA9IDAuOTUNCg0KYGBge3J9DQoNCnQudGVzdChkZiRvcnRhbGFtYSB+IGRmJGV2dmVsX3NvbnJhLCBwYWlyZWQgPSBUKQ0KDQpgYGANCg0KIyMjIDMuIGIpIChhKSBiyZluZGkgw7zDp8O8biDwnZGdIOKIkiDwnZGe8J2RlvCdkabwnZGayZnwnZGh8J2RlvCdkZvwnZGWIHRhcMSxbiB2yZkgbcmZbmFzxLFuxLEgaXphaCBlZGluLg0KDQpgYGB7cn0NCg0KYXBwbHkoZGF0YS5mcmFtZShldnZlbCwgc29ucmEpLCAyLCBzaGFwaXJvLnRlc3QpDQoNCmBgYA0KDQojIyMgNC4gZCkgKGEpIGLJmW5kaW5kyZlraSB0ZXN0IMO8w6fDvG4gaGFuc8SxIGbJmXJ6aXl5yZkgccmZYnVsIG9sdW5tYWzEsWTEsXI/DQoNCmBgYHtyfQ0KDQpzaGFwaXJvLnRlc3QoQVtBJGV2dmVsX3NvbnJhID09ICJldnZlbCIsXSRvcnRhbGFtYSkNCg0KYGBgDQoNCiMjIyA1KSBBbHRlcm5hdGl2IGZ1bmtzaXlhDQoNCmBgYHtyfQ0KDQpsaWJyYXJ5KGluZmVycikNCmRmMSA8LSBkYXRhLmZyYW1lKGV2dmVsLCBzb25yYSkNCmluZmVyX3RzX3BhaXJlZF90dGVzdChkZjEsIHggPSBldnZlbCwgeSA9IHNvbnJhKQ0KDQpgYGANCg0KIyMjIDYpIE5vcm1hbCBvbG1heWFuIHBheWxhbm1hIMO8w6fDvG4gV2lsY294b24tU2lnbiBSYW5rIHRlc3RpDQoNCmBgYHtyfQ0KDQp3aWxjb3gudGVzdChkZjEkZXZ2ZWwsIGRmMSRzb25yYSwgcGFpcmVkID0gVCkNCg0KYGBgDQoNCiMjIyA3KSBOyZl0aWPJmToNCiMjIyBIaXBvdGV6IHRlc3RpbmluIG7JmXRpY8mZc2luyZkgZ8O2csmZIDIgYXPEsWzEsSBuw7xtdW7JmSBhcmFzxLFuZGEgZsmZcnEgdmFyZMSxci4gQnVudW5sYSBkYSBIMCBoaXBvdGV6aSByyZlkZCBvbHVudXIuDQoNCg0KIyMgNi4gQW5vdmEgdGVzdGkNCiMjIyBIMDogbXUxICA9IG11MiAgPSBtdTMNCiMjIyBIMTogbXUxICE9IG11MiAhPSBtdTMNCg0KIyMjIDEpIERhdGFuxLFuIHF1cnVsbWFzxLE6DQoNCmBgYHtyfQ0KDQojMS4gRGF0YWxhcsSxbiBxdXJ1bG1hc8SxOw0KQSA8LSBjKDI4LDMzLDMwLDI5LDI4LDI5LDI3LDMxLDMwLDMyLDI4LDMzLDI1LDI5LDI3LDMxLDMxLDMwLDMxLDM0LDMwLDMyLDMxLDM0LDI4LDMyLDMxLDI4LDMzLDI5KQ0KDQpCIDwtIGMoMzEsMzIsMzAsMzAsMzMsMzIsMzQsMjcsMzYsMzAsMzEsMzAsMzgsMjksMzAsMzQsMzQsMzEsMzUsMzUsMzMsMzAsMjgsMjksMjYsMzcsMzEsMjgsMzQsMzMpDQoNCkMgPC0gYyg0MCwzMywzOCw0MSw0Miw0MywzOCwzNSwzOSwzOSwzNiwzNCwzNSw0MCwzOCwzNiwzOSwzNiwzMywzNSwzOCwzNSw0MCw0MCwzOSwzOCwzOCw0Myw0MCw0MikNCg0KIzIuIFF1cnVsbXXFnyBkYXRhbGFyxLFuIHllbmkgYmlyIGRhdGEgZnJhbWUtZMmZIGJpcmzJmcWfZGlyaWxtyZlzaTsNCkEgPC0gZGF0YS5mcmFtZSh2YXh0ID0gQSwgZ3J1cCA9ICJBIikNCkIgPC0gZGF0YS5mcmFtZSh2YXh0ID0gQiwgZ3J1cCA9ICJCIikNCkMgPC0gZGF0YS5mcmFtZSh2YXh0ID0gQywgZ3J1cCA9ICJDIikNCmRmIDwtIHJiaW5kKEEsQixDKQ0KDQojMy4gU3RhdGlzdGlrIHFpeW3JmXRsyZlyOw0KZGYgJT4lIA0KICBncm91cF9ieShncnVwKSAlPiUgDQogIHN1bW1hcmlzZShtZWFuKHZheHQpLCBtZWRpYW4odmF4dCksIHNkKHZheHQpKQ0KDQojNC4gRGF0YW7EsW4gdml6dWFsIGfDtnLDvG7DvMWfw7w7DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmdncGxvdChkZiwgYWVzKGdydXAsIHZheHQsIGZpbGwgPSBncnVwKSkgKw0KICBnZW9tX2JveHBsb3QoKQ0KDQpgYGANCg0KIyMjIDIpIFBheWxhbm1hbsSxbiB5b3hsYW5tYXPEsToNCg0KYGBge3J9DQoNCnNoYXBpcm8udGVzdChkZltkZiRncnVwID09ICJBIixdJHZheHQpDQpzaGFwaXJvLnRlc3QoZGZbZGYkZ3J1cCA9PSAiQiIsXSR2YXh0KQ0Kc2hhcGlyby50ZXN0KGRmW2RmJGdydXAgPT0gIkMiLF0kdmF4dCkNCg0KYGBgDQoNCiMjIyAzKSBEaXNwZXJzaXlhbGFyxLFuIHlveGxhbm1hc8SxOg0KDQpgYGB7cn0NCg0KbGlicmFyeShjYXIpDQpiYXJ0bGV0dC50ZXN0KHZheHQgfiBncnVwLCBkYXRhID0gZGYpDQpsZXZlbmVUZXN0KHZheHQgfiBncnVwLCBkYXRhID0gZGYpDQoNCmBgYA0KDQojIyMgNCkgSGlwb3RleiB0ZXN0aToNCg0KYGBge3J9DQoNCmFvdih2YXh0IH4gZ3J1cCwgZGF0YSA9IGRmKQ0Kc3VtbWFyeShhb3YodmF4dCB+IGdydXAsIGRhdGEgPSBkZikpDQoNCmBgYA0KDQojIyMgNSkgxLBraWxpIHFhcsWfxLFsYcWfZMSxcm1hOg0KDQpgYGB7cn0NCg0KVHVrZXlIU0QoYW92KHZheHQgfiBncnVwLCBkYXRhID0gZGYpKQ0KDQpgYGANCg0KIyMjIDYpIEFsdGVybmF0aXYgZnVua3NpeWE6DQoNCmBgYHtyfQ0KDQpsaWJyYXJ5KGluZmVycikNCmluZmVyX29uZXdheV9hbm92YShkZiwgdmF4dCwgZ3J1cCkNCg0KYGBgDQoNCiMjIyA3KSBOb3JtYWwgb2xtYXlhbiBwYXlsYW5tYSDDvMOnw7xuIEtydXNrYWwtV2FsbGlzIHRlc3RpOg0KDQpgYGB7cn0NCg0Ka3J1c2thbC50ZXN0KHZheHQgfiBncnVwLCBkYXRhID0gZGYpDQoNCmBgYA0KDQojIyMgTsmZdGljyZk6DQojIyMgUG9wdWx5YXNpZGFuIHNlw6dpbG1pxZ8gbsO8bXVuyZlsyZlyaW4gaGlwb3RleiB0ZXN0aW5pbiBuyZl0aWPJmXNpbsmZIGfDtnLJmSBuw7xtdW7JmWzJmXJpbiBvcnRhbGFtYWxhcsSxIGFyYXPEsW5kYSBjaWRkaSBmyZlycSB2YXJkxLFyLiBOyZl0aWPJmWTJmSBIMCBoaXBvdGV6aSBhdMSxbMSxci4NCg0KDQojIyA3LiBLb3JlbHlhc2l5YSB0ZXN0aQ0KIyMjIDEpIERhdGFuxLFuIG3JmW5pbXPJmWRpbG3JmXNpOg0KDQpgYGB7cn0NCg0KIzEgRGF0YW7EsW4gdMmZeWluIG9sdW5tYXPEsTsNCmRmIDwtIG10Y2Fycw0KaGVhZChkZikNCg0KIzIgxLBraSBkyZl5acWfyZluIGFyYXPEsW5kYSBrb3JlbHlhc2l5YW7EsW4gaGVzYWJsYW5tYXPEsTsNCmxpYnJhcnkoZ2dwdWJyKQ0KZ2dzY2F0dGVyKGRmLCB4ID0gIm1wZyIsIHkgPSAid3QiLCANCiAgICAgICAgICBhZGQgPSAicmVnLmxpbmUiLCANCiAgICAgICAgICBjb25mLmludCA9IFQsIA0KICAgICAgICAgIGNvci5jb2VmID0gVCwgDQogICAgICAgICAgY29yLm1ldGhvZCA9ICJwZWFyc29uIikNCg0KYGBgDQoNCiMjIyAyKSBEyZl5acWfyZlubMmZcmluIG5vcm1hbCBwYXlsYW7EsWIgcGF5bGFubWFtYXPEsW7EsW4geW94bGFubWFzxLE6DQoNCmBgYHtyfQ0KDQpzaGFwaXJvLnRlc3QoZGYkbXBnKQ0Kc2hhcGlyby50ZXN0KGRmJHd0KQ0KDQpgYGANCg0KIyMjIDMpIEhpcG90ZXogdGVzdGkgdsmZIHRlc3Qgc3RhdGlzdGlrYXPEsToNCg0KYGBge3J9DQoNCmNvci50ZXN0KGRmJG1wZywgZGYkd3QsIG1ldGhvZCA9ICJwZWFyc29uIikNCg0KYGBgDQoNCiMjIyA0KSBOb3JtYWwgb2xtYXlhbiBwYXlsYW5tYSDDvMOnw7xuIGhpcG90ZXogdGVzdGk6DQoNCmBgYHtyfQ0KDQpjb3IudGVzdChkZiRtcGcsIGRmJHd0LCBtZXRob2QgPSAic3BlYXJtYW4iKQ0KY29yLnRlc3QoZGYkbXBnLCBkZiR3dCwgbWV0aG9kID0gImtlbmRhbGwiKQ0KDQpgYGANCg0KIyMjIDUpIEtvcmVseWFzaXlhIG1hdHJpc2zJmXJpOg0KDQpgYGB7cn0NCg0KIzEgQsO8dMO8biBkyZl5acWfyZlubMmZcmluIGtvcmVseWFzaXlhc8SxOw0KY29yKGRmKQ0KDQojMiBZYWxuxLF6IGTJmXnJmXJsyZlyaSBtw7Z2Y3VkIG9sYW5sYXIgYXJhc8SxbmRhIGtvcmVseWFzaXlhOw0KY29yKGRmLCB1c2UgPSAiY29tcGxldGUub2JzIikNCg0KIzMgS29yZWx5YXNpeWEgaWzJmSB5YW5hxZ/EsSBwLXFpeW3JmXRpbmluIGhlc2FibGFubWFzxLE7DQpsaWJyYXJ5KEhtaXNjKQ0KcmNvcnIoYXMubWF0cml4KGRmKSkNCg0KYGBgDQoNCiMjIyA2KSBBZHZhbmNlZCBLb3JlbHlhc2l5YSBtYXRyaXNpOg0KDQpgYGB7cn0NCg0KbGlicmFyeShQZXJmb3JtYW5jZUFuYWx5dGljcykNCmRmIDwtIG10Y2Fyc1ssIGMoMSwzLDQsNSw2LDcpXQ0KY2hhcnQuQ29ycmVsYXRpb24oZGYsIGhpc3RvZ3JhbSA9IFQsIHBjaCA9IDE5KQ0KDQpgYGANCg0KDQoNCg0KDQoNCg0KDQo=