1 Librerias

library(readxl) # read_excel
library(writexl) # write_xlsx
library(knitr)
library(tidyverse) #%>%
library(dplyr)  # selec, mutate,...
library(psych) # describe()
library(FSA) # Summarize()
library(data.table)
library(flextable)
#library(xlsxjars) #write.xlsx
#library(rJava)
#library(xlsx)
#require(xlsx)

2 1. Introducción al paquete estadístico R

2.1 1.1 Lectura y respaldo de datos

2.1.1 Lectura de datos

datos<- read_excel("C:/Documetos MGM_OS_Dell/Documentos Maria_Dell/UAGro/Docencia/Simulacion y Computo Estadistico/Semestre 2_2020/Modulo 1/fallecidos_covid_Peru.xlsx")

View(datos)

attach(datos)

class(datos)
  [1] "tbl_df"     "tbl"        "data.frame"
head(datos)
  # A tibble: 6 × 9
    FECHA_CORTE UUID            FECHA_FALLECIMIENTO EDAD_DECLARADA SEXO  FECHA_NAC
          <dbl> <chr>                         <dbl>          <dbl> <chr>     <dbl>
  1    20200918 7320cabdc1aaca…            20200319             78 MASC…  19411013
  2    20200918 e81602051997ac…            20200319             69 MASC…  19510305
  3    20200918 cecdbf10074dbc…            20200321             83 MASC…  19390817
  4    20200918 71ecb6bccb248b…            20200324             65 FEME…  19540104
  5    20200918 566af4276cbe93…            20200324             76 MASC…        NA
  6    20200918 027561e9d126e7…            20200324             94 MASC…  19251206
  # ℹ 3 more variables: DEPARTAMENTO <chr>, PROVINCIA <chr>, DISTRITO <chr>
dim(datos)
  [1] 31369     9

2.1.2 Exportación de bases de datos

res<-table(SEXO,EDAD_DECLARADA)

View(res)

class(res)
  [1] "table"
res<-as.data.frame(res)

class(res)
  [1] "data.frame"
#--- Guardar archivos .xlsx

#write.xlsx(res,"C:/Users/WINDOWS 8/Documents/Documentos Maria/UAGro/Materias/Simulacion y Computo Estadistico/Semestre 2_2020/res.xlsx", 
#sheetName = "Sheet1", append = FALSE)

ruta<-"C:/Documetos MGM_OS_Dell/Documentos Maria_Dell/UAGro/Docencia/Simulacion y Computo Estadistico/Simulacion_semestre_2_2023/Resultados.xlsx"

write_xlsx(res,ruta)

#--- Guardar un .csv

write.csv(res,ruta)

#--- Guardar un .txt

write.table(res, ruta, sep = "\t", quote = F, row.names = F)

2.2 1.2 Manejo de vectores y matrices

2.2.1 Análisis

table(SEXO) # Vector
  SEXO
   FEMENINO MASCULINO 
       9366     22003
table(EDAD_DECLARADA) # vector
  EDAD_DECLARADA
    0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19 
   14  11   9   6   9   6   4   8   6   7   8   4   6   2   7   8   5  12   8   6 
   20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39 
   14  15  22  29  24  20  27  33  42  28  50  52  81  64  94  76  69 109 119 149 
   40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59 
  141 198 174 211 225 291 275 296 354 370 395 434 449 496 542 622 632 713 666 743 
   60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79 
  809 857 820 914 833 952 936 871 877 907 842 825 855 882 811 774 727 723 614 627 
   80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 
  657 583 547 490 482 445 379 343 294 271 215 161 165 112  83  67  39  26  25  18 
  100 101 102 103 104 107 108 
    8   6   1   1   3   1   1
edad.m<-data.frame(table(EDAD_DECLARADA))

edad.m%>% 
  flextable()

EDAD_DECLARADA

Freq

0

14

1

11

2

9

3

6

4

9

5

6

6

4

7

8

8

6

9

7

10

8

11

4

12

6

13

2

14

7

15

8

16

5

17

12

18

8

19

6

20

14

21

15

22

22

23

29

24

24

25

20

26

27

27

33

28

42

29

28

30

50

31

52

32

81

33

64

34

94

35

76

36

69

37

109

38

119

39

149

40

141

41

198

42

174

43

211

44

225

45

291

46

275

47

296

48

354

49

370

50

395

51

434

52

449

53

496

54

542

55

622

56

632

57

713

58

666

59

743

60

809

61

857

62

820

63

914

64

833

65

952

66

936

67

871

68

877

69

907

70

842

71

825

72

855

73

882

74

811

75

774

76

727

77

723

78

614

79

627

80

657

81

583

82

547

83

490

84

482

85

445

86

379

87

343

88

294

89

271

90

215

91

161

92

165

93

112

94

83

95

67

96

39

97

26

98

25

99

18

100

8

101

6

102

1

103

1

104

3

107

1

108

1

hist(EDAD_DECLARADA, main="Población total")

res<-table(SEXO,EDAD_DECLARADA)

res<-as.data.frame(res)

res%>% 
  flextable()

SEXO

EDAD_DECLARADA

Freq

FEMENINO

0

8

MASCULINO

0

6

FEMENINO

1

4

MASCULINO

1

7

FEMENINO

2

6

MASCULINO

2

3

FEMENINO

3

2

MASCULINO

3

4

FEMENINO

4

3

MASCULINO

4

6

FEMENINO

5

4

MASCULINO

5

2

FEMENINO

6

1

MASCULINO

6

3

FEMENINO

7

1

MASCULINO

7

7

FEMENINO

8

3

MASCULINO

8

3

FEMENINO

9

3

MASCULINO

9

4

FEMENINO

10

3

MASCULINO

10

5

FEMENINO

11

2

MASCULINO

11

2

FEMENINO

12

2

MASCULINO

12

4

FEMENINO

13

2

MASCULINO

13

0

FEMENINO

14

4

MASCULINO

14

3

FEMENINO

15

4

MASCULINO

15

4

FEMENINO

16

2

MASCULINO

16

3

FEMENINO

17

1

MASCULINO

17

11

FEMENINO

18

3

MASCULINO

18

5

FEMENINO

19

4

MASCULINO

19

2

FEMENINO

20

3

MASCULINO

20

11

FEMENINO

21

6

MASCULINO

21

9

FEMENINO

22

6

MASCULINO

22

16

FEMENINO

23

13

MASCULINO

23

16

FEMENINO

24

15

MASCULINO

24

9

FEMENINO

25

5

MASCULINO

25

15

FEMENINO

26

10

MASCULINO

26

17

FEMENINO

27

13

MASCULINO

27

20

FEMENINO

28

16

MASCULINO

28

26

FEMENINO

29

4

MASCULINO

29

24

FEMENINO

30

15

MASCULINO

30

35

FEMENINO

31

23

MASCULINO

31

29

FEMENINO

32

24

MASCULINO

32

57

FEMENINO

33

24

MASCULINO

33

40

FEMENINO

34

33

MASCULINO

34

61

FEMENINO

35

21

MASCULINO

35

55

FEMENINO

36

20

MASCULINO

36

49

FEMENINO

37

26

MASCULINO

37

83

FEMENINO

38

28

MASCULINO

38

91

FEMENINO

39

42

MASCULINO

39

107

FEMENINO

40

48

MASCULINO

40

93

FEMENINO

41

49

MASCULINO

41

149

FEMENINO

42

41

MASCULINO

42

133

FEMENINO

43

46

MASCULINO

43

165

FEMENINO

44

59

MASCULINO

44

166

FEMENINO

45

70

MASCULINO

45

221

FEMENINO

46

72

MASCULINO

46

203

FEMENINO

47

76

MASCULINO

47

220

FEMENINO

48

87

MASCULINO

48

267

FEMENINO

49

94

MASCULINO

49

276

FEMENINO

50

89

MASCULINO

50

306

FEMENINO

51

113

MASCULINO

51

321

FEMENINO

52

92

MASCULINO

52

357

FEMENINO

53

109

MASCULINO

53

387

FEMENINO

54

134

MASCULINO

54

408

FEMENINO

55

151

MASCULINO

55

471

FEMENINO

56

156

MASCULINO

56

476

FEMENINO

57

185

MASCULINO

57

528

FEMENINO

58

186

MASCULINO

58

480

FEMENINO

59

188

MASCULINO

59

555

FEMENINO

60

204

MASCULINO

60

605

FEMENINO

61

214

MASCULINO

61

643

FEMENINO

62

250

MASCULINO

62

570

FEMENINO

63

290

MASCULINO

63

624

FEMENINO

64

254

MASCULINO

64

579

FEMENINO

65

294

MASCULINO

65

658

FEMENINO

66

292

MASCULINO

66

644

FEMENINO

67

239

MASCULINO

67

632

FEMENINO

68

293

MASCULINO

68

584

FEMENINO

69

276

MASCULINO

69

631

FEMENINO

70

256

MASCULINO

70

586

FEMENINO

71

263

MASCULINO

71

562

FEMENINO

72

264

MASCULINO

72

591

FEMENINO

73

271

MASCULINO

73

611

FEMENINO

74

250

MASCULINO

74

561

FEMENINO

75

252

MASCULINO

75

522

FEMENINO

76

216

MASCULINO

76

511

FEMENINO

77

224

MASCULINO

77

499

FEMENINO

78

193

MASCULINO

78

421

FEMENINO

79

219

MASCULINO

79

408

FEMENINO

80

222

MASCULINO

80

435

FEMENINO

81

189

MASCULINO

81

394

FEMENINO

82

173

MASCULINO

82

374

FEMENINO

83

162

MASCULINO

83

328

FEMENINO

84

169

MASCULINO

84

313

FEMENINO

85

150

MASCULINO

85

295

FEMENINO

86

132

MASCULINO

86

247

FEMENINO

87

131

MASCULINO

87

212

FEMENINO

88

101

MASCULINO

88

193

FEMENINO

89

95

MASCULINO

89

176

FEMENINO

90

76

MASCULINO

90

139

FEMENINO

91

67

MASCULINO

91

94

FEMENINO

92

61

MASCULINO

92

104

FEMENINO

93

44

MASCULINO

93

68

FEMENINO

94

34

MASCULINO

94

49

FEMENINO

95

33

MASCULINO

95

34

FEMENINO

96

17

MASCULINO

96

22

FEMENINO

97

12

MASCULINO

97

14

FEMENINO

98

10

MASCULINO

98

15

FEMENINO

99

11

MASCULINO

99

7

FEMENINO

100

4

MASCULINO

100

4

FEMENINO

101

2

MASCULINO

101

4

FEMENINO

102

1

MASCULINO

102

0

FEMENINO

103

1

MASCULINO

103

0

FEMENINO

104

1

MASCULINO

104

2

FEMENINO

107

0

MASCULINO

107

1

FEMENINO

108

0

MASCULINO

108

1

res<-as.data.frame(res)

res%>% 
  flextable()

SEXO

EDAD_DECLARADA

Freq

FEMENINO

0

8

MASCULINO

0

6

FEMENINO

1

4

MASCULINO

1

7

FEMENINO

2

6

MASCULINO

2

3

FEMENINO

3

2

MASCULINO

3

4

FEMENINO

4

3

MASCULINO

4

6

FEMENINO

5

4

MASCULINO

5

2

FEMENINO

6

1

MASCULINO

6

3

FEMENINO

7

1

MASCULINO

7

7

FEMENINO

8

3

MASCULINO

8

3

FEMENINO

9

3

MASCULINO

9

4

FEMENINO

10

3

MASCULINO

10

5

FEMENINO

11

2

MASCULINO

11

2

FEMENINO

12

2

MASCULINO

12

4

FEMENINO

13

2

MASCULINO

13

0

FEMENINO

14

4

MASCULINO

14

3

FEMENINO

15

4

MASCULINO

15

4

FEMENINO

16

2

MASCULINO

16

3

FEMENINO

17

1

MASCULINO

17

11

FEMENINO

18

3

MASCULINO

18

5

FEMENINO

19

4

MASCULINO

19

2

FEMENINO

20

3

MASCULINO

20

11

FEMENINO

21

6

MASCULINO

21

9

FEMENINO

22

6

MASCULINO

22

16

FEMENINO

23

13

MASCULINO

23

16

FEMENINO

24

15

MASCULINO

24

9

FEMENINO

25

5

MASCULINO

25

15

FEMENINO

26

10

MASCULINO

26

17

FEMENINO

27

13

MASCULINO

27

20

FEMENINO

28

16

MASCULINO

28

26

FEMENINO

29

4

MASCULINO

29

24

FEMENINO

30

15

MASCULINO

30

35

FEMENINO

31

23

MASCULINO

31

29

FEMENINO

32

24

MASCULINO

32

57

FEMENINO

33

24

MASCULINO

33

40

FEMENINO

34

33

MASCULINO

34

61

FEMENINO

35

21

MASCULINO

35

55

FEMENINO

36

20

MASCULINO

36

49

FEMENINO

37

26

MASCULINO

37

83

FEMENINO

38

28

MASCULINO

38

91

FEMENINO

39

42

MASCULINO

39

107

FEMENINO

40

48

MASCULINO

40

93

FEMENINO

41

49

MASCULINO

41

149

FEMENINO

42

41

MASCULINO

42

133

FEMENINO

43

46

MASCULINO

43

165

FEMENINO

44

59

MASCULINO

44

166

FEMENINO

45

70

MASCULINO

45

221

FEMENINO

46

72

MASCULINO

46

203

FEMENINO

47

76

MASCULINO

47

220

FEMENINO

48

87

MASCULINO

48

267

FEMENINO

49

94

MASCULINO

49

276

FEMENINO

50

89

MASCULINO

50

306

FEMENINO

51

113

MASCULINO

51

321

FEMENINO

52

92

MASCULINO

52

357

FEMENINO

53

109

MASCULINO

53

387

FEMENINO

54

134

MASCULINO

54

408

FEMENINO

55

151

MASCULINO

55

471

FEMENINO

56

156

MASCULINO

56

476

FEMENINO

57

185

MASCULINO

57

528

FEMENINO

58

186

MASCULINO

58

480

FEMENINO

59

188

MASCULINO

59

555

FEMENINO

60

204

MASCULINO

60

605

FEMENINO

61

214

MASCULINO

61

643

FEMENINO

62

250

MASCULINO

62

570

FEMENINO

63

290

MASCULINO

63

624

FEMENINO

64

254

MASCULINO

64

579

FEMENINO

65

294

MASCULINO

65

658

FEMENINO

66

292

MASCULINO

66

644

FEMENINO

67

239

MASCULINO

67

632

FEMENINO

68

293

MASCULINO

68

584

FEMENINO

69

276

MASCULINO

69

631

FEMENINO

70

256

MASCULINO

70

586

FEMENINO

71

263

MASCULINO

71

562

FEMENINO

72

264

MASCULINO

72

591

FEMENINO

73

271

MASCULINO

73

611

FEMENINO

74

250

MASCULINO

74

561

FEMENINO

75

252

MASCULINO

75

522

FEMENINO

76

216

MASCULINO

76

511

FEMENINO

77

224

MASCULINO

77

499

FEMENINO

78

193

MASCULINO

78

421

FEMENINO

79

219

MASCULINO

79

408

FEMENINO

80

222

MASCULINO

80

435

FEMENINO

81

189

MASCULINO

81

394

FEMENINO

82

173

MASCULINO

82

374

FEMENINO

83

162

MASCULINO

83

328

FEMENINO

84

169

MASCULINO

84

313

FEMENINO

85

150

MASCULINO

85

295

FEMENINO

86

132

MASCULINO

86

247

FEMENINO

87

131

MASCULINO

87

212

FEMENINO

88

101

MASCULINO

88

193

FEMENINO

89

95

MASCULINO

89

176

FEMENINO

90

76

MASCULINO

90

139

FEMENINO

91

67

MASCULINO

91

94

FEMENINO

92

61

MASCULINO

92

104

FEMENINO

93

44

MASCULINO

93

68

FEMENINO

94

34

MASCULINO

94

49

FEMENINO

95

33

MASCULINO

95

34

FEMENINO

96

17

MASCULINO

96

22

FEMENINO

97

12

MASCULINO

97

14

FEMENINO

98

10

MASCULINO

98

15

FEMENINO

99

11

MASCULINO

99

7

FEMENINO

100

4

MASCULINO

100

4

FEMENINO

101

2

MASCULINO

101

4

FEMENINO

102

1

MASCULINO

102

0

FEMENINO

103

1

MASCULINO

103

0

FEMENINO

104

1

MASCULINO

104

2

FEMENINO

107

0

MASCULINO

107

1

FEMENINO

108

0

MASCULINO

108

1

# Seleccionar un mes

datos$Mes<-substr(FECHA_FALLECIMIENTO,5,6)


datos%>%
  count(Mes)%>% 
  flextable()

Mes

n

03

77

04

2,756

05

7,044

06

8,165

07

5,682

08

5,344

09

2,301

# Tarea separar los totales de mes por sexo

#--- Uso de dplyer y tydiverse

datos%>%
  select(SEXO, EDAD_DECLARADA)%>%
  dplyr::filter(SEXO=="MASCULINO",EDAD_DECLARADA==35)%>% 
  count(SEXO)%>% 
  flextable()

SEXO

n

MASCULINO

55

#-----

table(SEXO)
  SEXO
   FEMENINO MASCULINO 
       9366     22003
datos%>%   
  group_by(SEXO)%>% 
  summarise(Total=n())%>% 
  flextable()

SEXO

Total

FEMENINO

9,366

MASCULINO

22,003

prop.table(table(SEXO))
  SEXO
   FEMENINO MASCULINO 
   0.298575  0.701425
prop.table(table(SEXO))*100
  SEXO
   FEMENINO MASCULINO 
    29.8575   70.1425
dat1<- datos%>%   
         group_by(SEXO)%>% 
         summarise(Total=n())%>% 
         mutate(Frecuencia=Total/sum(Total),Porcentaje=(Total/sum(Total))*100)


flextable(dat1)

SEXO

Total

Frecuencia

Porcentaje

FEMENINO

9,366

0.298575

29.8575

MASCULINO

22,003

0.701425

70.1425

2.3 1.3 Gráficas en R

Librería ggplot2

res<-table(SEXO, EDAD_DECLARADA)
class(res)
  [1] "table"
res<-as.data.frame(res) # Necesario para ggplot

colnames(res)<-c("Sexo","Edad","Total")

res%>%
  flextable()

Sexo

Edad

Total

FEMENINO

0

8

MASCULINO

0

6

FEMENINO

1

4

MASCULINO

1

7

FEMENINO

2

6

MASCULINO

2

3

FEMENINO

3

2

MASCULINO

3

4

FEMENINO

4

3

MASCULINO

4

6

FEMENINO

5

4

MASCULINO

5

2

FEMENINO

6

1

MASCULINO

6

3

FEMENINO

7

1

MASCULINO

7

7

FEMENINO

8

3

MASCULINO

8

3

FEMENINO

9

3

MASCULINO

9

4

FEMENINO

10

3

MASCULINO

10

5

FEMENINO

11

2

MASCULINO

11

2

FEMENINO

12

2

MASCULINO

12

4

FEMENINO

13

2

MASCULINO

13

0

FEMENINO

14

4

MASCULINO

14

3

FEMENINO

15

4

MASCULINO

15

4

FEMENINO

16

2

MASCULINO

16

3

FEMENINO

17

1

MASCULINO

17

11

FEMENINO

18

3

MASCULINO

18

5

FEMENINO

19

4

MASCULINO

19

2

FEMENINO

20

3

MASCULINO

20

11

FEMENINO

21

6

MASCULINO

21

9

FEMENINO

22

6

MASCULINO

22

16

FEMENINO

23

13

MASCULINO

23

16

FEMENINO

24

15

MASCULINO

24

9

FEMENINO

25

5

MASCULINO

25

15

FEMENINO

26

10

MASCULINO

26

17

FEMENINO

27

13

MASCULINO

27

20

FEMENINO

28

16

MASCULINO

28

26

FEMENINO

29

4

MASCULINO

29

24

FEMENINO

30

15

MASCULINO

30

35

FEMENINO

31

23

MASCULINO

31

29

FEMENINO

32

24

MASCULINO

32

57

FEMENINO

33

24

MASCULINO

33

40

FEMENINO

34

33

MASCULINO

34

61

FEMENINO

35

21

MASCULINO

35

55

FEMENINO

36

20

MASCULINO

36

49

FEMENINO

37

26

MASCULINO

37

83

FEMENINO

38

28

MASCULINO

38

91

FEMENINO

39

42

MASCULINO

39

107

FEMENINO

40

48

MASCULINO

40

93

FEMENINO

41

49

MASCULINO

41

149

FEMENINO

42

41

MASCULINO

42

133

FEMENINO

43

46

MASCULINO

43

165

FEMENINO

44

59

MASCULINO

44

166

FEMENINO

45

70

MASCULINO

45

221

FEMENINO

46

72

MASCULINO

46

203

FEMENINO

47

76

MASCULINO

47

220

FEMENINO

48

87

MASCULINO

48

267

FEMENINO

49

94

MASCULINO

49

276

FEMENINO

50

89

MASCULINO

50

306

FEMENINO

51

113

MASCULINO

51

321

FEMENINO

52

92

MASCULINO

52

357

FEMENINO

53

109

MASCULINO

53

387

FEMENINO

54

134

MASCULINO

54

408

FEMENINO

55

151

MASCULINO

55

471

FEMENINO

56

156

MASCULINO

56

476

FEMENINO

57

185

MASCULINO

57

528

FEMENINO

58

186

MASCULINO

58

480

FEMENINO

59

188

MASCULINO

59

555

FEMENINO

60

204

MASCULINO

60

605

FEMENINO

61

214

MASCULINO

61

643

FEMENINO

62

250

MASCULINO

62

570

FEMENINO

63

290

MASCULINO

63

624

FEMENINO

64

254

MASCULINO

64

579

FEMENINO

65

294

MASCULINO

65

658

FEMENINO

66

292

MASCULINO

66

644

FEMENINO

67

239

MASCULINO

67

632

FEMENINO

68

293

MASCULINO

68

584

FEMENINO

69

276

MASCULINO

69

631

FEMENINO

70

256

MASCULINO

70

586

FEMENINO

71

263

MASCULINO

71

562

FEMENINO

72

264

MASCULINO

72

591

FEMENINO

73

271

MASCULINO

73

611

FEMENINO

74

250

MASCULINO

74

561

FEMENINO

75

252

MASCULINO

75

522

FEMENINO

76

216

MASCULINO

76

511

FEMENINO

77

224

MASCULINO

77

499

FEMENINO

78

193

MASCULINO

78

421

FEMENINO

79

219

MASCULINO

79

408

FEMENINO

80

222

MASCULINO

80

435

FEMENINO

81

189

MASCULINO

81

394

FEMENINO

82

173

MASCULINO

82

374

FEMENINO

83

162

MASCULINO

83

328

FEMENINO

84

169

MASCULINO

84

313

FEMENINO

85

150

MASCULINO

85

295

FEMENINO

86

132

MASCULINO

86

247

FEMENINO

87

131

MASCULINO

87

212

FEMENINO

88

101

MASCULINO

88

193

FEMENINO

89

95

MASCULINO

89

176

FEMENINO

90

76

MASCULINO

90

139

FEMENINO

91

67

MASCULINO

91

94

FEMENINO

92

61

MASCULINO

92

104

FEMENINO

93

44

MASCULINO

93

68

FEMENINO

94

34

MASCULINO

94

49

FEMENINO

95

33

MASCULINO

95

34

FEMENINO

96

17

MASCULINO

96

22

FEMENINO

97

12

MASCULINO

97

14

FEMENINO

98

10

MASCULINO

98

15

FEMENINO

99

11

MASCULINO

99

7

FEMENINO

100

4

MASCULINO

100

4

FEMENINO

101

2

MASCULINO

101

4

FEMENINO

102

1

MASCULINO

102

0

FEMENINO

103

1

MASCULINO

103

0

FEMENINO

104

1

MASCULINO

104

2

FEMENINO

107

0

MASCULINO

107

1

FEMENINO

108

0

MASCULINO

108

1

datos1<-data.frame(Sexo=res[,1],Edad=res[,2], Total=res[,3])


datos1%>%
  flextable()

Sexo

Edad

Total

FEMENINO

0

8

MASCULINO

0

6

FEMENINO

1

4

MASCULINO

1

7

FEMENINO

2

6

MASCULINO

2

3

FEMENINO

3

2

MASCULINO

3

4

FEMENINO

4

3

MASCULINO

4

6

FEMENINO

5

4

MASCULINO

5

2

FEMENINO

6

1

MASCULINO

6

3

FEMENINO

7

1

MASCULINO

7

7

FEMENINO

8

3

MASCULINO

8

3

FEMENINO

9

3

MASCULINO

9

4

FEMENINO

10

3

MASCULINO

10

5

FEMENINO

11

2

MASCULINO

11

2

FEMENINO

12

2

MASCULINO

12

4

FEMENINO

13

2

MASCULINO

13

0

FEMENINO

14

4

MASCULINO

14

3

FEMENINO

15

4

MASCULINO

15

4

FEMENINO

16

2

MASCULINO

16

3

FEMENINO

17

1

MASCULINO

17

11

FEMENINO

18

3

MASCULINO

18

5

FEMENINO

19

4

MASCULINO

19

2

FEMENINO

20

3

MASCULINO

20

11

FEMENINO

21

6

MASCULINO

21

9

FEMENINO

22

6

MASCULINO

22

16

FEMENINO

23

13

MASCULINO

23

16

FEMENINO

24

15

MASCULINO

24

9

FEMENINO

25

5

MASCULINO

25

15

FEMENINO

26

10

MASCULINO

26

17

FEMENINO

27

13

MASCULINO

27

20

FEMENINO

28

16

MASCULINO

28

26

FEMENINO

29

4

MASCULINO

29

24

FEMENINO

30

15

MASCULINO

30

35

FEMENINO

31

23

MASCULINO

31

29

FEMENINO

32

24

MASCULINO

32

57

FEMENINO

33

24

MASCULINO

33

40

FEMENINO

34

33

MASCULINO

34

61

FEMENINO

35

21

MASCULINO

35

55

FEMENINO

36

20

MASCULINO

36

49

FEMENINO

37

26

MASCULINO

37

83

FEMENINO

38

28

MASCULINO

38

91

FEMENINO

39

42

MASCULINO

39

107

FEMENINO

40

48

MASCULINO

40

93

FEMENINO

41

49

MASCULINO

41

149

FEMENINO

42

41

MASCULINO

42

133

FEMENINO

43

46

MASCULINO

43

165

FEMENINO

44

59

MASCULINO

44

166

FEMENINO

45

70

MASCULINO

45

221

FEMENINO

46

72

MASCULINO

46

203

FEMENINO

47

76

MASCULINO

47

220

FEMENINO

48

87

MASCULINO

48

267

FEMENINO

49

94

MASCULINO

49

276

FEMENINO

50

89

MASCULINO

50

306

FEMENINO

51

113

MASCULINO

51

321

FEMENINO

52

92

MASCULINO

52

357

FEMENINO

53

109

MASCULINO

53

387

FEMENINO

54

134

MASCULINO

54

408

FEMENINO

55

151

MASCULINO

55

471

FEMENINO

56

156

MASCULINO

56

476

FEMENINO

57

185

MASCULINO

57

528

FEMENINO

58

186

MASCULINO

58

480

FEMENINO

59

188

MASCULINO

59

555

FEMENINO

60

204

MASCULINO

60

605

FEMENINO

61

214

MASCULINO

61

643

FEMENINO

62

250

MASCULINO

62

570

FEMENINO

63

290

MASCULINO

63

624

FEMENINO

64

254

MASCULINO

64

579

FEMENINO

65

294

MASCULINO

65

658

FEMENINO

66

292

MASCULINO

66

644

FEMENINO

67

239

MASCULINO

67

632

FEMENINO

68

293

MASCULINO

68

584

FEMENINO

69

276

MASCULINO

69

631

FEMENINO

70

256

MASCULINO

70

586

FEMENINO

71

263

MASCULINO

71

562

FEMENINO

72

264

MASCULINO

72

591

FEMENINO

73

271

MASCULINO

73

611

FEMENINO

74

250

MASCULINO

74

561

FEMENINO

75

252

MASCULINO

75

522

FEMENINO

76

216

MASCULINO

76

511

FEMENINO

77

224

MASCULINO

77

499

FEMENINO

78

193

MASCULINO

78

421

FEMENINO

79

219

MASCULINO

79

408

FEMENINO

80

222

MASCULINO

80

435

FEMENINO

81

189

MASCULINO

81

394

FEMENINO

82

173

MASCULINO

82

374

FEMENINO

83

162

MASCULINO

83

328

FEMENINO

84

169

MASCULINO

84

313

FEMENINO

85

150

MASCULINO

85

295

FEMENINO

86

132

MASCULINO

86

247

FEMENINO

87

131

MASCULINO

87

212

FEMENINO

88

101

MASCULINO

88

193

FEMENINO

89

95

MASCULINO

89

176

FEMENINO

90

76

MASCULINO

90

139

FEMENINO

91

67

MASCULINO

91

94

FEMENINO

92

61

MASCULINO

92

104

FEMENINO

93

44

MASCULINO

93

68

FEMENINO

94

34

MASCULINO

94

49

FEMENINO

95

33

MASCULINO

95

34

FEMENINO

96

17

MASCULINO

96

22

FEMENINO

97

12

MASCULINO

97

14

FEMENINO

98

10

MASCULINO

98

15

FEMENINO

99

11

MASCULINO

99

7

FEMENINO

100

4

MASCULINO

100

4

FEMENINO

101

2

MASCULINO

101

4

FEMENINO

102

1

MASCULINO

102

0

FEMENINO

103

1

MASCULINO

103

0

FEMENINO

104

1

MASCULINO

104

2

FEMENINO

107

0

MASCULINO

107

1

FEMENINO

108

0

MASCULINO

108

1

ggplot(datos1, aes(x=Sexo, y=Total, fill=Sexo)) +
       geom_boxplot() +
       labs(x="Sexo")+
theme_minimal()+
theme(legend.position = "none",
      axis.text.x=element_text(angle=0,hjust=1,size=8))

ggplot(datos1, aes(x=Sexo, y=Total, fill=Sexo)) +
       geom_bar(stat="identity") +
       labs(x="Sexo")+
       theme(legend.position = "none",axis.text.x=element_text(angle=90,hjust=1,size=9))

dat2<-datos%>%   
      group_by(SEXO, Mes)%>% 
      summarise(Total=n())%>% 
      mutate(Porcentaje=(Total/sum(Total))*100)%>%
      rename(Sexo = SEXO)  


flextable(dat2)%>%
  colformat_double(digits =2)

Sexo

Mes

Total

Porcentaje

FEMENINO

03

21

0.22

FEMENINO

04

772

8.24

FEMENINO

05

2,045

21.83

FEMENINO

06

2,485

26.53

FEMENINO

07

1,680

17.94

FEMENINO

08

1,637

17.48

FEMENINO

09

726

7.75

MASCULINO

03

56

0.25

MASCULINO

04

1,984

9.02

MASCULINO

05

4,999

22.72

MASCULINO

06

5,680

25.81

MASCULINO

07

4,002

18.19

MASCULINO

08

3,707

16.85

MASCULINO

09

1,575

7.16

dat2$Mes<-factor(dat2$Mes,
                 labels=c("Marzo","Abril", "Mayo",
                          "Junio","Julio", "Agosto",
                           "Septiembre"))

dat2%>%
  flextable()

Sexo

Mes

Total

Porcentaje

FEMENINO

Marzo

21

0.2242152

FEMENINO

Abril

772

8.2425795

FEMENINO

Mayo

2,045

21.8342943

FEMENINO

Junio

2,485

26.5321375

FEMENINO

Julio

1,680

17.9372197

FEMENINO

Agosto

1,637

17.4781123

FEMENINO

Septiembre

726

7.7514414

MASCULINO

Marzo

56

0.2545107

MASCULINO

Abril

1,984

9.0169522

MASCULINO

Mayo

4,999

22.7196291

MASCULINO

Junio

5,680

25.8146616

MASCULINO

Julio

4,002

18.1884289

MASCULINO

Agosto

3,707

16.8477026

MASCULINO

Septiembre

1,575

7.1581148

ggplot(dat2, aes(Sexo, Total,color=Sexo,fill=Sexo)) +
geom_bar(stat="identity")+
facet_wrap(~ Mes)+
theme(legend.position="none",axis.text.x=element_text(angle=90,hjust=1,size=9))

2.4 1.4 Análisis estadístico básico en R

iris%>%
  flextable()

Sepal.Length

Sepal.Width

Petal.Length

Petal.Width

Species

5.1

3.5

1.4

0.2

setosa

4.9

3.0

1.4

0.2

setosa

4.7

3.2

1.3

0.2

setosa

4.6

3.1

1.5

0.2

setosa

5.0

3.6

1.4

0.2

setosa

5.4

3.9

1.7

0.4

setosa

4.6

3.4

1.4

0.3

setosa

5.0

3.4

1.5

0.2

setosa

4.4

2.9

1.4

0.2

setosa

4.9

3.1

1.5

0.1

setosa

5.4

3.7

1.5

0.2

setosa

4.8

3.4

1.6

0.2

setosa

4.8

3.0

1.4

0.1

setosa

4.3

3.0

1.1

0.1

setosa

5.8

4.0

1.2

0.2

setosa

5.7

4.4

1.5

0.4

setosa

5.4

3.9

1.3

0.4

setosa

5.1

3.5

1.4

0.3

setosa

5.7

3.8

1.7

0.3

setosa

5.1

3.8

1.5

0.3

setosa

5.4

3.4

1.7

0.2

setosa

5.1

3.7

1.5

0.4

setosa

4.6

3.6

1.0

0.2

setosa

5.1

3.3

1.7

0.5

setosa

4.8

3.4

1.9

0.2

setosa

5.0

3.0

1.6

0.2

setosa

5.0

3.4

1.6

0.4

setosa

5.2

3.5

1.5

0.2

setosa

5.2

3.4

1.4

0.2

setosa

4.7

3.2

1.6

0.2

setosa

4.8

3.1

1.6

0.2

setosa

5.4

3.4

1.5

0.4

setosa

5.2

4.1

1.5

0.1

setosa

5.5

4.2

1.4

0.2

setosa

4.9

3.1

1.5

0.2

setosa

5.0

3.2

1.2

0.2

setosa

5.5

3.5

1.3

0.2

setosa

4.9

3.6

1.4

0.1

setosa

4.4

3.0

1.3

0.2

setosa

5.1

3.4

1.5

0.2

setosa

5.0

3.5

1.3

0.3

setosa

4.5

2.3

1.3

0.3

setosa

4.4

3.2

1.3

0.2

setosa

5.0

3.5

1.6

0.6

setosa

5.1

3.8

1.9

0.4

setosa

4.8

3.0

1.4

0.3

setosa

5.1

3.8

1.6

0.2

setosa

4.6

3.2

1.4

0.2

setosa

5.3

3.7

1.5

0.2

setosa

5.0

3.3

1.4

0.2

setosa

7.0

3.2

4.7

1.4

versicolor

6.4

3.2

4.5

1.5

versicolor

6.9

3.1

4.9

1.5

versicolor

5.5

2.3

4.0

1.3

versicolor

6.5

2.8

4.6

1.5

versicolor

5.7

2.8

4.5

1.3

versicolor

6.3

3.3

4.7

1.6

versicolor

4.9

2.4

3.3

1.0

versicolor

6.6

2.9

4.6

1.3

versicolor

5.2

2.7

3.9

1.4

versicolor

5.0

2.0

3.5

1.0

versicolor

5.9

3.0

4.2

1.5

versicolor

6.0

2.2

4.0

1.0

versicolor

6.1

2.9

4.7

1.4

versicolor

5.6

2.9

3.6

1.3

versicolor

6.7

3.1

4.4

1.4

versicolor

5.6

3.0

4.5

1.5

versicolor

5.8

2.7

4.1

1.0

versicolor

6.2

2.2

4.5

1.5

versicolor

5.6

2.5

3.9

1.1

versicolor

5.9

3.2

4.8

1.8

versicolor

6.1

2.8

4.0

1.3

versicolor

6.3

2.5

4.9

1.5

versicolor

6.1

2.8

4.7

1.2

versicolor

6.4

2.9

4.3

1.3

versicolor

6.6

3.0

4.4

1.4

versicolor

6.8

2.8

4.8

1.4

versicolor

6.7

3.0

5.0

1.7

versicolor

6.0

2.9

4.5

1.5

versicolor

5.7

2.6

3.5

1.0

versicolor

5.5

2.4

3.8

1.1

versicolor

5.5

2.4

3.7

1.0

versicolor

5.8

2.7

3.9

1.2

versicolor

6.0

2.7

5.1

1.6

versicolor

5.4

3.0

4.5

1.5

versicolor

6.0

3.4

4.5

1.6

versicolor

6.7

3.1

4.7

1.5

versicolor

6.3

2.3

4.4

1.3

versicolor

5.6

3.0

4.1

1.3

versicolor

5.5

2.5

4.0

1.3

versicolor

5.5

2.6

4.4

1.2

versicolor

6.1

3.0

4.6

1.4

versicolor

5.8

2.6

4.0

1.2

versicolor

5.0

2.3

3.3

1.0

versicolor

5.6

2.7

4.2

1.3

versicolor

5.7

3.0

4.2

1.2

versicolor

5.7

2.9

4.2

1.3

versicolor

6.2

2.9

4.3

1.3

versicolor

5.1

2.5

3.0

1.1

versicolor

5.7

2.8

4.1

1.3

versicolor

6.3

3.3

6.0

2.5

virginica

5.8

2.7

5.1

1.9

virginica

7.1

3.0

5.9

2.1

virginica

6.3

2.9

5.6

1.8

virginica

6.5

3.0

5.8

2.2

virginica

7.6

3.0

6.6

2.1

virginica

4.9

2.5

4.5

1.7

virginica

7.3

2.9

6.3

1.8

virginica

6.7

2.5

5.8

1.8

virginica

7.2

3.6

6.1

2.5

virginica

6.5

3.2

5.1

2.0

virginica

6.4

2.7

5.3

1.9

virginica

6.8

3.0

5.5

2.1

virginica

5.7

2.5

5.0

2.0

virginica

5.8

2.8

5.1

2.4

virginica

6.4

3.2

5.3

2.3

virginica

6.5

3.0

5.5

1.8

virginica

7.7

3.8

6.7

2.2

virginica

7.7

2.6

6.9

2.3

virginica

6.0

2.2

5.0

1.5

virginica

6.9

3.2

5.7

2.3

virginica

5.6

2.8

4.9

2.0

virginica

7.7

2.8

6.7

2.0

virginica

6.3

2.7

4.9

1.8

virginica

6.7

3.3

5.7

2.1

virginica

7.2

3.2

6.0

1.8

virginica

6.2

2.8

4.8

1.8

virginica

6.1

3.0

4.9

1.8

virginica

6.4

2.8

5.6

2.1

virginica

7.2

3.0

5.8

1.6

virginica

7.4

2.8

6.1

1.9

virginica

7.9

3.8

6.4

2.0

virginica

6.4

2.8

5.6

2.2

virginica

6.3

2.8

5.1

1.5

virginica

6.1

2.6

5.6

1.4

virginica

7.7

3.0

6.1

2.3

virginica

6.3

3.4

5.6

2.4

virginica

6.4

3.1

5.5

1.8

virginica

6.0

3.0

4.8

1.8

virginica

6.9

3.1

5.4

2.1

virginica

6.7

3.1

5.6

2.4

virginica

6.9

3.1

5.1

2.3

virginica

5.8

2.7

5.1

1.9

virginica

6.8

3.2

5.9

2.3

virginica

6.7

3.3

5.7

2.5

virginica

6.7

3.0

5.2

2.3

virginica

6.3

2.5

5.0

1.9

virginica

6.5

3.0

5.2

2.0

virginica

6.2

3.4

5.4

2.3

virginica

5.9

3.0

5.1

1.8

virginica

#--- Estadísticas

Summarize(iris[,1]) # Variable Sepal.Length
            n        mean          sd         min          Q1      median 
  150.0000000   5.8433333   0.8280661   4.3000000   5.1000000   5.8000000 
           Q3         max 
    6.4000000   7.9000000
describe(iris) # todas las variables
               vars   n mean   sd median trimmed  mad min max range  skew
  Sepal.Length    1 150 5.84 0.83   5.80    5.81 1.04 4.3 7.9   3.6  0.31
  Sepal.Width     2 150 3.06 0.44   3.00    3.04 0.44 2.0 4.4   2.4  0.31
  Petal.Length    3 150 3.76 1.77   4.35    3.76 1.85 1.0 6.9   5.9 -0.27
  Petal.Width     4 150 1.20 0.76   1.30    1.18 1.04 0.1 2.5   2.4 -0.10
  Species*        5 150 2.00 0.82   2.00    2.00 1.48 1.0 3.0   2.0  0.00
               kurtosis   se
  Sepal.Length    -0.61 0.07
  Sepal.Width      0.14 0.04
  Petal.Length    -1.42 0.14
  Petal.Width     -1.36 0.06
  Species*        -1.52 0.07
summary(iris) # todas las variables
    Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
   Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
   1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
   Median :5.800   Median :3.000   Median :4.350   Median :1.300  
   Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
   3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
   Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
         Species  
   setosa    :50  
   versicolor:50  
   virginica :50  
                  
                  
  
mean(iris[,1])
  [1] 5.843333
apply(iris[,1:4], 2, mean)
  Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
      5.843333     3.057333     3.758000     1.199333
apply(iris[,1:4], 2, sd)
  Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
     0.8280661    0.4358663    1.7652982    0.7622377
cov(iris[,1:4]) # matriz de covarianza
               Sepal.Length Sepal.Width Petal.Length Petal.Width
  Sepal.Length    0.6856935  -0.0424340    1.2743154   0.5162707
  Sepal.Width    -0.0424340   0.1899794   -0.3296564  -0.1216394
  Petal.Length    1.2743154  -0.3296564    3.1162779   1.2956094
  Petal.Width     0.5162707  -0.1216394    1.2956094   0.5810063
x<-c(1,2,5,3,4)
sample(iris[,1],5,replace =TRUE)
  [1] 6.2 4.9 5.5 5.9 5.5
# Gráficos

hist(EDAD_DECLARADA)
abline(v=67,col="red")
abline(h=3000,col="blue")

#--- Opción 1

Edad<-EDAD_DECLARADA
mu.e<-mean(Edad)
sd.e<-sd(Edad)

hist(Edad,freq = FALSE,main="Histograma de Edad")
curve(dnorm(x,mean =mu.e, sd = sd.e),
      min(Edad),max(Edad),add=TRUE,col="purple",lty=2,lwd=5)

# Opción 2


f.norm<-function(x)
{
1/(sqrt(2*pi)*sd.e)*exp((-1/2)*((x-mu.e)/sd.e)^2) 
}

hist(Edad,freq = FALSE,main="Histograma de Edad")
curve(f.norm,min(Edad),max(Edad),add=TRUE,col="purple",lty=2,lwd=5, ylab=expression(f[x](x)), main="PDF for X")

# opción 3

hist(Edad,freq=F, col="violet", main="Muestra simulada") # densidad de la muestra
x <- seq(min(Edad),max(Edad),
         length.out=length(Edad))
lines(x, f.norm(x)) # densidad de la curva

2.5 1.5 Algunas funciones importantes para el manejo de datos

Dada la función \[ f(x)=e^{-\frac{x^2}{2}} \] integrarla en el intervalo \([1,\infty)\)

library(flextable)

f<-function(x) 
    {
     exp(-x^2/2)
    }

integrate(f, lower=1, upper=Inf)
  0.3976897 with absolute error < 1.2e-06

Dada la función \[ \frac{1}{\sqrt{2\pi}\sigma}e^{\frac{-(x-\mu)^{2}}{2\sigma^{2}}} \] integrarla en \((-\infty,\infty)\)

mu.e<-0
sd.e<-1

f.norm<-function(x)
{
1/(sqrt(2*pi)*sd.e)*exp((-1/2)*((x-mu.e)/sd.e)^2) 
}

integrate(f.norm, lower=-Inf, upper=0)
  0.5 with absolute error < 4.7e-05

Observaciones para la distribución \(\chi^{2}\).

  • dchisq(x,\(\mu\), ds), da la pdf, \(f(x)\) en (-inf,inf)

  • pchisq(x,\(\mu\), ds), da cdf, \(F(x)\) en (-inf,inf)

  • qchisq(s,\(\mu\), ds), da el percentiles para \(s\) en \((0,1)\)

  • rchisq(n,\(\mu\), ds), generación de una muestra aleatoria.

La pdf de la \(\chi^2\) está dada por \[ f(x)=\frac{1}{\Gamma(k/2)}\left(\frac{1}{2}\right)^{k/2}x^{k/2-1}e^{-(1/2)x}I_{(0,\infty)}(x) \]

curve(dchisq(x, df = 3), from = 0, to = 20, 
      ylab = expression(f[X](x)),
      col="red",main="pdf de la Chi")

Por otra parte,

# Grupo de Chicuadradas

x1<-seq(0,20,length=10)
y1<-seq(0,0.30,length=10)

plot(x1,y1,type="n",
     ylab = expression(f[X](x)),
     xlab="x",
     main="pdf")

ind <- c(3,4,5,10,15)

for (i in ind) 
    {
      curve(dchisq(x, df = i),from=0, to=20, 
            col=i,add =TRUE,ylim=c(0,.3))
     }

leg.txt <- c("gl=3","gl=4","gl=5","gl=10","gl=15")
legend("topright", leg.txt, col=ind, lwd=1, lty=1, bty="n")

#legend(15,0.25, leg.txt, col=ind, lwd=1, lty=1, bty="n")
#leg.txt <- paste(expression(X^{2}(2)))
LS0tDQp0aXRsZTogIkludHJvZHVjY2nDs24gYWwgc29mdHdhcmUgZXN0YWTDrXN0aWNvIFIiDQpzdWJ0aXRsZTogIlNpbXVsYWNpw7NuIHkgQ29tcHV0byBFc3RhZMOtc3RpY28iDQphdXRob3I6DQotIG5hbWU6ICJNYXLDrWEgR3V6bcOhbiBNYXJ0w61uZXogKG1ndXptYW5AdWFncm8ubXgpIg0KICBhZmZpbGlhdGlvbjogIlVuaXZlcnNpZGFkIEF1dMOzbm9tYSBkZSBHdWVycmVybyINCmRhdGU6ICIzMCBkZSBzZXB0aWVtYnJlLCAyMDIzIg0KbG9nbzogcm1hcmtkb3duLnBuZw0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogeWVzICAgICAgICAgICAgICAgICAgIyBpbmNsdWlyIHRhYmxhIGRlIGNvbnRlbmlkbw0KICAgIHRvY19mbG9hdDogeWVzICAgICAgICAgICAgIyB0b2MgZmxvdGFudGUgYSBsYSBpenF1aWVyZGENCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcyAgICAgICMgbnVtZXJhciBzZWNjaW9uZXMgeSBzdWJzZWNjaW9uZXMNCiAgICBjb2RlX2ZvbGRpbmc6IHNob3cgICAgIyBwb3IgZGVmZWN0byBlbCBjw7NkaWdvIGFwYXJlY2Vyw6Egb2N1bHRvOiBoaWRlDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KICAgICNtYXRoamF4OiBsb2NhbCAgICAgICMgZW1wbGVhIHVuYSBjb3BpYSBsb2NhbCBkZSBNYXRoSmF4LCBoYXkgcXVlIGVzdGFibGVjZXI6DQogICAgI3NlbGZfY29udGFpbmVkOiBmYWxzZSAgICMgbGFzIGRlcGVuZGVuY2lhcyBzZSBndWFyZGFuIGVuIGZpY2hlcm9zIGV4dGVybm9zDQogICAgI2xpYl9kaXI6IGxpYnMgICAgICAgICAgICMgZGlyZWN0b3JpbyBwYXJhIGxpYnJlcsOtYXMgKEJvb3RzdHJhcCwgTWF0aEpheCwgLi4uKQ0KLS0tDQoNCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQojIENvbmZpZ3VyYWNpb25lcw0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KICAgICAgICAgICAgICAgIGVjaG8gPSBUUlVFLA0KICAgICAgICAgICAgICAgIGNvbW1lbnQgPSAiICIsDQogICAgICAgICAgICAgICAgd2FybmluZyA9IEYsDQogICAgICAgICAgICAgICAgZXJyb3IgPSBGLA0KICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBGDQogICAgICAgICAgICAgICAgKQ0KYGBgDQoNCg0KDQojIExpYnJlcmlhcw0KDQpgYGB7cn0NCmxpYnJhcnkocmVhZHhsKSAjIHJlYWRfZXhjZWwNCmxpYnJhcnkod3JpdGV4bCkgIyB3cml0ZV94bHN4DQpsaWJyYXJ5KGtuaXRyKQ0KbGlicmFyeSh0aWR5dmVyc2UpICMlPiUNCmxpYnJhcnkoZHBseXIpICAjIHNlbGVjLCBtdXRhdGUsLi4uDQpsaWJyYXJ5KHBzeWNoKSAjIGRlc2NyaWJlKCkNCmxpYnJhcnkoRlNBKSAjIFN1bW1hcml6ZSgpDQpsaWJyYXJ5KGRhdGEudGFibGUpDQpsaWJyYXJ5KGZsZXh0YWJsZSkNCiNsaWJyYXJ5KHhsc3hqYXJzKSAjd3JpdGUueGxzeA0KI2xpYnJhcnkockphdmEpDQojbGlicmFyeSh4bHN4KQ0KI3JlcXVpcmUoeGxzeCkNCmBgYA0KDQoNCiMgMS4gSW50cm9kdWNjacOzbiBhbCBwYXF1ZXRlIGVzdGFkw61zdGljbyBSDQoNCiMjIDEuMSBMZWN0dXJhIHkgcmVzcGFsZG8gZGUgZGF0b3MNCg0KIyMjIExlY3R1cmEgZGUgZGF0b3MNCg0KYGBge3J9DQoNCmRhdG9zPC0gcmVhZF9leGNlbCgiQzovRG9jdW1ldG9zIE1HTV9PU19EZWxsL0RvY3VtZW50b3MgTWFyaWFfRGVsbC9VQUdyby9Eb2NlbmNpYS9TaW11bGFjaW9uIHkgQ29tcHV0byBFc3RhZGlzdGljby9TZW1lc3RyZSAyXzIwMjAvTW9kdWxvIDEvZmFsbGVjaWRvc19jb3ZpZF9QZXJ1Lnhsc3giKQ0KDQpWaWV3KGRhdG9zKQ0KDQphdHRhY2goZGF0b3MpDQoNCmNsYXNzKGRhdG9zKQ0KDQpoZWFkKGRhdG9zKQ0KDQpkaW0oZGF0b3MpDQpgYGANCg0KIyMjIEV4cG9ydGFjacOzbiBkZSBiYXNlcyBkZSBkYXRvcw0KDQpgYGB7cn0NCg0KcmVzPC10YWJsZShTRVhPLEVEQURfREVDTEFSQURBKQ0KDQpWaWV3KHJlcykNCg0KY2xhc3MocmVzKQ0KDQpyZXM8LWFzLmRhdGEuZnJhbWUocmVzKQ0KDQpjbGFzcyhyZXMpDQoNCiMtLS0gR3VhcmRhciBhcmNoaXZvcyAueGxzeA0KDQojd3JpdGUueGxzeChyZXMsIkM6L1VzZXJzL1dJTkRPV1MgOC9Eb2N1bWVudHMvRG9jdW1lbnRvcyBNYXJpYS9VQUdyby9NYXRlcmlhcy9TaW11bGFjaW9uIHkgQ29tcHV0byBFc3RhZGlzdGljby9TZW1lc3RyZSAyXzIwMjAvcmVzLnhsc3giLCANCiNzaGVldE5hbWUgPSAiU2hlZXQxIiwgYXBwZW5kID0gRkFMU0UpDQoNCnJ1dGE8LSJDOi9Eb2N1bWV0b3MgTUdNX09TX0RlbGwvRG9jdW1lbnRvcyBNYXJpYV9EZWxsL1VBR3JvL0RvY2VuY2lhL1NpbXVsYWNpb24geSBDb21wdXRvIEVzdGFkaXN0aWNvL1NpbXVsYWNpb25fc2VtZXN0cmVfMl8yMDIzL1Jlc3VsdGFkb3MueGxzeCINCg0Kd3JpdGVfeGxzeChyZXMscnV0YSkNCg0KIy0tLSBHdWFyZGFyIHVuIC5jc3YNCg0Kd3JpdGUuY3N2KHJlcyxydXRhKQ0KDQojLS0tIEd1YXJkYXIgdW4gLnR4dA0KDQp3cml0ZS50YWJsZShyZXMsIHJ1dGEsIHNlcCA9ICJcdCIsIHF1b3RlID0gRiwgcm93Lm5hbWVzID0gRikNCmBgYA0KDQojIyAxLjIgTWFuZWpvIGRlIHZlY3RvcmVzIHkgbWF0cmljZXMNCg0KIyMjIEFuw6FsaXNpcw0KDQoNCmBgYHtyfQ0KDQoNCnRhYmxlKFNFWE8pICMgVmVjdG9yDQoNCnRhYmxlKEVEQURfREVDTEFSQURBKSAjIHZlY3Rvcg0KDQplZGFkLm08LWRhdGEuZnJhbWUodGFibGUoRURBRF9ERUNMQVJBREEpKQ0KDQplZGFkLm0lPiUgDQogIGZsZXh0YWJsZSgpDQoNCmhpc3QoRURBRF9ERUNMQVJBREEsIG1haW49IlBvYmxhY2nDs24gdG90YWwiKQ0KDQoNCnJlczwtdGFibGUoU0VYTyxFREFEX0RFQ0xBUkFEQSkNCg0KcmVzPC1hcy5kYXRhLmZyYW1lKHJlcykNCg0KcmVzJT4lIA0KICBmbGV4dGFibGUoKQ0KDQoNCnJlczwtYXMuZGF0YS5mcmFtZShyZXMpDQoNCnJlcyU+JSANCiAgZmxleHRhYmxlKCkNCg0KIyBTZWxlY2Npb25hciB1biBtZXMNCg0KZGF0b3MkTWVzPC1zdWJzdHIoRkVDSEFfRkFMTEVDSU1JRU5UTyw1LDYpDQoNCg0KZGF0b3MlPiUNCiAgY291bnQoTWVzKSU+JSANCiAgZmxleHRhYmxlKCkNCg0KYGBgDQoNCmBgYHtyfQ0KDQojIFRhcmVhIHNlcGFyYXIgbG9zIHRvdGFsZXMgZGUgbWVzIHBvciBzZXhvDQoNCiMtLS0gVXNvIGRlIGRwbHllciB5IHR5ZGl2ZXJzZQ0KDQpkYXRvcyU+JQ0KICBzZWxlY3QoU0VYTywgRURBRF9ERUNMQVJBREEpJT4lDQogIGRwbHlyOjpmaWx0ZXIoU0VYTz09Ik1BU0NVTElOTyIsRURBRF9ERUNMQVJBREE9PTM1KSU+JSANCiAgY291bnQoU0VYTyklPiUgDQogIGZsZXh0YWJsZSgpDQoNCg0KIy0tLS0tDQoNCnRhYmxlKFNFWE8pDQoNCmRhdG9zJT4lICAgDQogIGdyb3VwX2J5KFNFWE8pJT4lIA0KICBzdW1tYXJpc2UoVG90YWw9bigpKSU+JSANCiAgZmxleHRhYmxlKCkNCiAgDQoNCmBgYA0KDQoNCg0KDQpgYGB7cn0NCiAgDQpwcm9wLnRhYmxlKHRhYmxlKFNFWE8pKQ0KDQpwcm9wLnRhYmxlKHRhYmxlKFNFWE8pKSoxMDANCg0KZGF0MTwtIGRhdG9zJT4lICAgDQogICAgICAgICBncm91cF9ieShTRVhPKSU+JSANCiAgICAgICAgIHN1bW1hcmlzZShUb3RhbD1uKCkpJT4lIA0KICAgICAgICAgbXV0YXRlKEZyZWN1ZW5jaWE9VG90YWwvc3VtKFRvdGFsKSxQb3JjZW50YWplPShUb3RhbC9zdW0oVG90YWwpKSoxMDApDQoNCg0KZmxleHRhYmxlKGRhdDEpDQoNCg0KYGBgDQoNCg0KDQoNCiMjIDEuMyBHcsOhZmljYXMgZW4gUg0KDQpMaWJyZXLDrWEgZ2dwbG90Mg0KDQoNCmBgYHtyfQ0KcmVzPC10YWJsZShTRVhPLCBFREFEX0RFQ0xBUkFEQSkNCmNsYXNzKHJlcykNCg0KDQpyZXM8LWFzLmRhdGEuZnJhbWUocmVzKSAjIE5lY2VzYXJpbyBwYXJhIGdncGxvdA0KDQpjb2xuYW1lcyhyZXMpPC1jKCJTZXhvIiwiRWRhZCIsIlRvdGFsIikNCg0KcmVzJT4lDQogIGZsZXh0YWJsZSgpDQpgYGANCg0KYGBge3J9DQpkYXRvczE8LWRhdGEuZnJhbWUoU2V4bz1yZXNbLDFdLEVkYWQ9cmVzWywyXSwgVG90YWw9cmVzWywzXSkNCg0KDQpkYXRvczElPiUNCiAgZmxleHRhYmxlKCkNCg0KZ2dwbG90KGRhdG9zMSwgYWVzKHg9U2V4bywgeT1Ub3RhbCwgZmlsbD1TZXhvKSkgKw0KICAgICAgIGdlb21fYm94cGxvdCgpICsNCiAgICAgICBsYWJzKHg9IlNleG8iKSsNCnRoZW1lX21pbmltYWwoKSsNCnRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwNCiAgICAgIGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT0wLGhqdXN0PTEsc2l6ZT04KSkNCg0KYGBgDQoNCg0KYGBge3J9DQpnZ3Bsb3QoZGF0b3MxLCBhZXMoeD1TZXhvLCB5PVRvdGFsLCBmaWxsPVNleG8pKSArDQogICAgICAgZ2VvbV9iYXIoc3RhdD0iaWRlbnRpdHkiKSArDQogICAgICAgbGFicyh4PSJTZXhvIikrDQogICAgICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCxoanVzdD0xLHNpemU9OSkpDQoNCmBgYA0KDQoNCmBgYHtyfQ0KDQpkYXQyPC1kYXRvcyU+JSAgIA0KICAgICAgZ3JvdXBfYnkoU0VYTywgTWVzKSU+JSANCiAgICAgIHN1bW1hcmlzZShUb3RhbD1uKCkpJT4lIA0KICAgICAgbXV0YXRlKFBvcmNlbnRhamU9KFRvdGFsL3N1bShUb3RhbCkpKjEwMCklPiUNCiAgICAgIHJlbmFtZShTZXhvID0gU0VYTykgIA0KDQoNCmZsZXh0YWJsZShkYXQyKSU+JQ0KICBjb2xmb3JtYXRfZG91YmxlKGRpZ2l0cyA9MikNCg0KDQpkYXQyJE1lczwtZmFjdG9yKGRhdDIkTWVzLA0KICAgICAgICAgICAgICAgICBsYWJlbHM9YygiTWFyem8iLCJBYnJpbCIsICJNYXlvIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIkp1bmlvIiwiSnVsaW8iLCAiQWdvc3RvIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZXB0aWVtYnJlIikpDQoNCmRhdDIlPiUNCiAgZmxleHRhYmxlKCkNCg0KZ2dwbG90KGRhdDIsIGFlcyhTZXhvLCBUb3RhbCxjb2xvcj1TZXhvLGZpbGw9U2V4bykpICsNCmdlb21fYmFyKHN0YXQ9ImlkZW50aXR5IikrDQpmYWNldF93cmFwKH4gTWVzKSsNCnRoZW1lKGxlZ2VuZC5wb3NpdGlvbj0ibm9uZSIsYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwLGhqdXN0PTEsc2l6ZT05KSkNCg0KYGBgDQoNCg0KDQojIyAxLjQgQW7DoWxpc2lzIGVzdGFkw61zdGljbyBiw6FzaWNvIGVuIFIgDQoNCmBgYHtyfQ0KDQppcmlzJT4lDQogIGZsZXh0YWJsZSgpDQoNCiMtLS0gRXN0YWTDrXN0aWNhcw0KDQpTdW1tYXJpemUoaXJpc1ssMV0pICMgVmFyaWFibGUgU2VwYWwuTGVuZ3RoDQpkZXNjcmliZShpcmlzKSAjIHRvZGFzIGxhcyB2YXJpYWJsZXMNCnN1bW1hcnkoaXJpcykgIyB0b2RhcyBsYXMgdmFyaWFibGVzDQoNCm1lYW4oaXJpc1ssMV0pDQphcHBseShpcmlzWywxOjRdLCAyLCBtZWFuKQ0KYXBwbHkoaXJpc1ssMTo0XSwgMiwgc2QpDQpjb3YoaXJpc1ssMTo0XSkgIyBtYXRyaXogZGUgY292YXJpYW56YQ0KDQp4PC1jKDEsMiw1LDMsNCkNCnNhbXBsZShpcmlzWywxXSw1LHJlcGxhY2UgPVRSVUUpDQoNCmBgYA0KDQpgYGB7cn0NCiMgR3LDoWZpY29zDQoNCmhpc3QoRURBRF9ERUNMQVJBREEpDQphYmxpbmUodj02Nyxjb2w9InJlZCIpDQphYmxpbmUoaD0zMDAwLGNvbD0iYmx1ZSIpDQpgYGANCg0KDQpgYGB7cn0NCiMtLS0gT3BjacOzbiAxDQoNCkVkYWQ8LUVEQURfREVDTEFSQURBDQptdS5lPC1tZWFuKEVkYWQpDQpzZC5lPC1zZChFZGFkKQ0KDQpoaXN0KEVkYWQsZnJlcSA9IEZBTFNFLG1haW49Ikhpc3RvZ3JhbWEgZGUgRWRhZCIpDQpjdXJ2ZShkbm9ybSh4LG1lYW4gPW11LmUsIHNkID0gc2QuZSksDQogICAgICBtaW4oRWRhZCksbWF4KEVkYWQpLGFkZD1UUlVFLGNvbD0icHVycGxlIixsdHk9Mixsd2Q9NSkNCg0KYGBgDQoNCmBgYHtyfQ0KIyBPcGNpw7NuIDINCg0KDQpmLm5vcm08LWZ1bmN0aW9uKHgpDQp7DQoxLyhzcXJ0KDIqcGkpKnNkLmUpKmV4cCgoLTEvMikqKCh4LW11LmUpL3NkLmUpXjIpIA0KfQ0KDQpoaXN0KEVkYWQsZnJlcSA9IEZBTFNFLG1haW49Ikhpc3RvZ3JhbWEgZGUgRWRhZCIpDQpjdXJ2ZShmLm5vcm0sbWluKEVkYWQpLG1heChFZGFkKSxhZGQ9VFJVRSxjb2w9InB1cnBsZSIsbHR5PTIsbHdkPTUsIHlsYWI9ZXhwcmVzc2lvbihmW3hdKHgpKSwgbWFpbj0iUERGIGZvciBYIikNCg0KYGBgDQoNCg0KYGBge3J9DQojIG9wY2nDs24gMw0KDQpoaXN0KEVkYWQsZnJlcT1GLCBjb2w9InZpb2xldCIsIG1haW49Ik11ZXN0cmEgc2ltdWxhZGEiKSAjIGRlbnNpZGFkIGRlIGxhIG11ZXN0cmENCnggPC0gc2VxKG1pbihFZGFkKSxtYXgoRWRhZCksDQogICAgICAgICBsZW5ndGgub3V0PWxlbmd0aChFZGFkKSkNCmxpbmVzKHgsIGYubm9ybSh4KSkgIyBkZW5zaWRhZCBkZSBsYSBjdXJ2YQ0KDQpgYGANCg0KDQoNCiMjIDEuNSBBbGd1bmFzIGZ1bmNpb25lcyBpbXBvcnRhbnRlcyBwYXJhIGVsIG1hbmVqbyBkZSBkYXRvcw0KDQpEYWRhIGxhIGZ1bmNpw7NuDQokJA0KZih4KT1lXnstXGZyYWN7eF4yfXsyfX0NCiQkDQppbnRlZ3JhcmxhIGVuIGVsIGludGVydmFsbyAkWzEsXGluZnR5KSQNCmBgYHtyfQ0KbGlicmFyeShmbGV4dGFibGUpDQoNCmY8LWZ1bmN0aW9uKHgpIA0KICAgIHsNCiAgICAgZXhwKC14XjIvMikNCiAgICB9DQoNCmludGVncmF0ZShmLCBsb3dlcj0xLCB1cHBlcj1JbmYpDQoNCmBgYA0KRGFkYSBsYSBmdW5jacOzbiANCiQkDQpcZnJhY3sxfXtcc3FydHsyXHBpfVxzaWdtYX1lXntcZnJhY3stKHgtXG11KV57Mn19ezJcc2lnbWFeezJ9fX0gDQokJA0KaW50ZWdyYXJsYSBlbiAkKC1caW5mdHksXGluZnR5KSQNCg0KYGBge3J9DQptdS5lPC0wDQpzZC5lPC0xDQoNCmYubm9ybTwtZnVuY3Rpb24oeCkNCnsNCjEvKHNxcnQoMipwaSkqc2QuZSkqZXhwKCgtMS8yKSooKHgtbXUuZSkvc2QuZSleMikgDQp9DQoNCmludGVncmF0ZShmLm5vcm0sIGxvd2VyPS1JbmYsIHVwcGVyPTApDQpgYGANCg0KT2JzZXJ2YWNpb25lcyBwYXJhIGxhIGRpc3RyaWJ1Y2nDs24gJFxjaGleezJ9JC4NCg0KDQoqIGRjaGlzcSh4LCRcbXUkLCBkcyksIGRhIGxhIHBkZiwgJGYoeCkkIGVuICgtaW5mLGluZikNCg0KKiBwY2hpc3EoeCwkXG11JCwgZHMpLCBkYSBjZGYsICRGKHgpJCBlbiAoLWluZixpbmYpDQoNCiogcWNoaXNxKHMsJFxtdSQsIGRzKSwgIGRhIGVsIHBlcmNlbnRpbGVzIHBhcmEgJHMkIGVuICQoMCwxKSQNCg0KKiByY2hpc3EobiwkXG11JCwgZHMpLCBnZW5lcmFjacOzbiBkZSB1bmEgbXVlc3RyYSBhbGVhdG9yaWEuDQoNCkxhICBwZGYgZGUgbGEgJFxjaGleMiQgZXN0w6EgZGFkYSBwb3INCiQkDQpmKHgpPVxmcmFjezF9e1xHYW1tYShrLzIpfVxsZWZ0KFxmcmFjezF9ezJ9XHJpZ2h0KV57ay8yfXhee2svMi0xfWVeey0oMS8yKXh9SV97KDAsXGluZnR5KX0oeCkNCiQkDQoNCmBgYHtyfQ0KY3VydmUoZGNoaXNxKHgsIGRmID0gMyksIGZyb20gPSAwLCB0byA9IDIwLCANCiAgICAgIHlsYWIgPSBleHByZXNzaW9uKGZbWF0oeCkpLA0KICAgICAgY29sPSJyZWQiLG1haW49InBkZiBkZSBsYSBDaGkiKQ0KYGBgDQoNClBvciBvdHJhIHBhcnRlLA0KYGBge3J9DQojIEdydXBvIGRlIENoaWN1YWRyYWRhcw0KDQp4MTwtc2VxKDAsMjAsbGVuZ3RoPTEwKQ0KeTE8LXNlcSgwLDAuMzAsbGVuZ3RoPTEwKQ0KDQpwbG90KHgxLHkxLHR5cGU9Im4iLA0KICAgICB5bGFiID0gZXhwcmVzc2lvbihmW1hdKHgpKSwNCiAgICAgeGxhYj0ieCIsDQogICAgIG1haW49InBkZiIpDQoNCmluZCA8LSBjKDMsNCw1LDEwLDE1KQ0KDQpmb3IgKGkgaW4gaW5kKSANCiAgICB7DQogICAgICBjdXJ2ZShkY2hpc3EoeCwgZGYgPSBpKSxmcm9tPTAsIHRvPTIwLCANCiAgICAgICAgICAgIGNvbD1pLGFkZCA9VFJVRSx5bGltPWMoMCwuMykpDQogICAgIH0NCg0KbGVnLnR4dCA8LSBjKCJnbD0zIiwiZ2w9NCIsImdsPTUiLCJnbD0xMCIsImdsPTE1IikNCmxlZ2VuZCgidG9wcmlnaHQiLCBsZWcudHh0LCBjb2w9aW5kLCBsd2Q9MSwgbHR5PTEsIGJ0eT0ibiIpDQoNCiNsZWdlbmQoMTUsMC4yNSwgbGVnLnR4dCwgY29sPWluZCwgbHdkPTEsIGx0eT0xLCBidHk9Im4iKQ0KI2xlZy50eHQgPC0gcGFzdGUoZXhwcmVzc2lvbihYXnsyfSgyKSkpDQpgYGANCg0KDQoNCg==