DASC 360: Multivariate Statistics and Data Analysis

Load Relevant R Libraries

library(rmarkdown); library(knitr); library(moments); 
library(scatterplot3d); library(corrplot); library(pso)
library(psych); library(GPArotation); library(lavaan)

EXERCISE 01

Part (a)

isleRoyale <- matrix(c(20,  538,    NA,    NA,   20,
                       22,  564,    NA,    NA, 14.3,
                       22,  572,    NA,    NA, 19.5,
                       23,  579,    NA,    NA, 16.5,
                       20,  596,    NA,    NA, 21.2,
                       26,  620,    NA,    NA, 15.9,
                       28,  634,    NA,    NA, 13.2,
                       26,  661,    NA,    NA,   18,
                       22,  766,    NA,    NA,   21,
                       22,  848,    NA,    NA,   20,
                       17, 1041,    NA,    NA, 16.5,
                       18, 1045,    NA,    NA, 16.1,
                       20, 1183, 0.615, 0.062, 11.4,
                       23, 1243, 0.819, 0.091, 10.7,
                       24, 1215, 0.760, 0.090, 15.1,
                       31, 1203, 0.599, 0.093, 14.7,
                       41, 1139, 0.645, 0.139, 12.3,
                       44, 1070, 0.563, 0.139, 10.3,
                       34,  949, 0.298, 0.064,  6.1,
                       40,  845, 0.507, 0.144, 10.2,
                       43,  857, 0.387, 0.117,   13,
                       50,  788, 0.330, 0.126,   12,
                       30,  767, 0.217, 0.051, 23.7,
                       14,  780, 0.869, 0.094, 20.7,
                       23,  830, 0.394, 0.065, 16.4,
                       24,  927, 0.440, 0.068, 14.5,
                       22,  976, 0.457, 0.062, 13.1,
                       20, 1014, 0.670, 0.079,   16,
                       16, 1046, 0.549, 0.050,   16,
                       12, 1116, 0.864, 0.056, 15.2,
                       12, 1260, 0.810, 0.046, 13.4,
                       15, 1315, 0.857, 0.059, 14.8,
                       12, 1496, 1.029, 0.050, 13.9,
                       12, 1697, 1.428, 0.061, 10.9,
                       13, 1784, 0.877, 0.038,   14,
                       17, 2017, 0.792, 0.040,   12,
                       16, 2117, 1.391, 0.063,    7,
                       22, 2398, 1.274, 0.070,    3),
                     byrow = T, nrow = 38, ncol = 5,
                     dimnames = list(c(1959:1996),
                                     c("Wolves","Moose","Kill Rate","Predation Rate","Moose Recruitment Rate")))
isleRoyale
##      Wolves Moose Kill Rate Predation Rate Moose Recruitment Rate
## 1959     20   538        NA             NA                   20.0
## 1960     22   564        NA             NA                   14.3
## 1961     22   572        NA             NA                   19.5
## 1962     23   579        NA             NA                   16.5
## 1963     20   596        NA             NA                   21.2
## 1964     26   620        NA             NA                   15.9
## 1965     28   634        NA             NA                   13.2
## 1966     26   661        NA             NA                   18.0
## 1967     22   766        NA             NA                   21.0
## 1968     22   848        NA             NA                   20.0
## 1969     17  1041        NA             NA                   16.5
## 1970     18  1045        NA             NA                   16.1
## 1971     20  1183     0.615          0.062                   11.4
## 1972     23  1243     0.819          0.091                   10.7
## 1973     24  1215     0.760          0.090                   15.1
## 1974     31  1203     0.599          0.093                   14.7
## 1975     41  1139     0.645          0.139                   12.3
## 1976     44  1070     0.563          0.139                   10.3
## 1977     34   949     0.298          0.064                    6.1
## 1978     40   845     0.507          0.144                   10.2
## 1979     43   857     0.387          0.117                   13.0
## 1980     50   788     0.330          0.126                   12.0
## 1981     30   767     0.217          0.051                   23.7
## 1982     14   780     0.869          0.094                   20.7
## 1983     23   830     0.394          0.065                   16.4
## 1984     24   927     0.440          0.068                   14.5
## 1985     22   976     0.457          0.062                   13.1
## 1986     20  1014     0.670          0.079                   16.0
## 1987     16  1046     0.549          0.050                   16.0
## 1988     12  1116     0.864          0.056                   15.2
## 1989     12  1260     0.810          0.046                   13.4
## 1990     15  1315     0.857          0.059                   14.8
## 1991     12  1496     1.029          0.050                   13.9
## 1992     12  1697     1.428          0.061                   10.9
## 1993     13  1784     0.877          0.038                   14.0
## 1994     17  2017     0.792          0.040                   12.0
## 1995     16  2117     1.391          0.063                    7.0
## 1996     22  2398     1.274          0.070                    3.0

Part (b)

# Insert code or written answer here
nrow(isleRoyale)
## [1] 38
ncol(isleRoyale)
## [1] 5

Part (c)

# Insert code or written answer here
head(isleRoyale, n = 3)
##      Wolves Moose Kill Rate Predation Rate Moose Recruitment Rate
## 1959     20   538        NA             NA                   20.0
## 1960     22   564        NA             NA                   14.3
## 1961     22   572        NA             NA                   19.5

Part (d)

# Insert code or written answer here
isleRoyale[7, "Wolves"]
## [1] 28

Part (e)

# Insert code or written answer here
isleRoyale[13, "Moose"]
## [1] 1183

Part (f)

# Insert code or written answer here
isleRoyale["1981", c("Wolves", "Moose")]
## Wolves  Moose 
##     30    767

EXERCISE 02

Part (a)

# Insert code or written answer here
poverty <- matrix(
  c(
    0.3,0.0,0.4,1.5,
    7.4,4.9,16.3,13.2,
    1.7,0.2,34.2,16.0,
    0.1,0.3,0.6,4.0,
    2.4,1.3,8.2,5.1,
    4.3,1.4,3.6,3.9,
    2.1,0.3,9.0,6.3,
    6.2,4.1,12.1,5.4,
    0.5,0.1,1.0,2.0
  ),
  ncol = 4,
  byrow = TRUE
)

rownames(poverty) <- c("Argentina","Bolivia","Brazil","Chile","Colombia","Ecuador","Paraguay","Peru","Uruguay")
colnames(poverty) <- c("Water","Electricity","Sanitation","Education")

Part (b)

# Insert code or written answer here
dim(poverty)
## [1] 9 4

Part (c)

# Insert code or written answer here
poverty[, c("Electricity","Education")]
##           Electricity Education
## Argentina         0.0       1.5
## Bolivia           4.9      13.2
## Brazil            0.2      16.0
## Chile             0.3       4.0
## Colombia          1.3       5.1
## Ecuador           1.4       3.9
## Paraguay          0.3       6.3
## Peru              4.1       5.4
## Uruguay           0.1       2.0

Part (d)

# Insert code or written answer here
poverty["Chile","Sanitation"] <- 2.4

Part (e)

# Insert code or written answer here
which(poverty > 10, arr.ind = TRUE)
##         row col
## Bolivia   2   3
## Brazil    3   3
## Peru      8   3
## Bolivia   2   4
## Brazil    3   4

Part (f)

# Insert code or written answer here
poverty[poverty > 10] <- 10
poverty
##           Water Electricity Sanitation Education
## Argentina   0.3         0.0        0.4       1.5
## Bolivia     7.4         4.9       10.0      10.0
## Brazil      1.7         0.2       10.0      10.0
## Chile       0.1         0.3        2.4       4.0
## Colombia    2.4         1.3        8.2       5.1
## Ecuador     4.3         1.4        3.6       3.9
## Paraguay    2.1         0.3        9.0       6.3
## Peru        6.2         4.1       10.0       5.4
## Uruguay     0.5         0.1        1.0       2.0

EXERCISE 03

Part (a)

# Insert code or written answer here
A <- matrix(c(4,3,8), nrow = 1)     # row of 3 numbers
B <- matrix(9, nrow = 1, ncol = 1)  # single number
C <- matrix(c(7,6,5,1), nrow = 2, byrow = TRUE) # 2x2 block
D <- matrix(2, nrow = 1, ncol = 1)  # single number

Part (b)

# Insert code or written answer here
middle_row <- cbind(B, C[2, , drop = FALSE])     # [9 5 1]
bottom_row <- cbind(D, C[1, , drop = FALSE])     # [2 7 6]

magic <- rbind(A, middle_row, bottom_row)
magic
##      [,1] [,2] [,3]
## [1,]    4    3    8
## [2,]    9    5    1
## [3,]    2    7    6

Part (c)

# Insert code or written answer here
rowSums(magic)
## [1] 15 15 15
colSums(magic)
## [1] 15 15 15

Part (d)

# Insert code or written answer here
sum(diag(magic))
## [1] 15

Part (e)

# Insert code or written answer here

Part (f)

# Insert code or written answer here

EXERCISE 04

Part (a)

# Insert code or written answer here
pres <- matrix(
  c(
    68,15.4,
    74,22.6,
    59,23.2,
    45,-2.1,
    37,-0.7,
    58,18.2,
    35,-5.5,
    54,8.5,
    48,2.4,
    52,3.9,
    45,-4.4
  ),
  ncol = 2,
  byrow = TRUE
)

rownames(pres) <- c("Eisenhower1956","Johnson1964","Nixon1972","Ford1976",
                    "Carter1980","Reagan1984","BushSr1992","Clinton1996",
                    "BushJr2004","Obama2012","Trump2020")
colnames(pres) <- c("Approval","Margin")

Part (b)

# Insert code or written answer here
which(pres[,"Approval"] < 50)
##   Ford1976 Carter1980 BushSr1992 BushJr2004  Trump2020 
##          4          5          7          9         11

Part (c)

# Insert code or written answer here
which(pres[,"Margin"] < 0)
##   Ford1976 Carter1980 BushSr1992  Trump2020 
##          4          5          7         11

Part (d)

The difference is that Bush Jr. (2004) shows up only in the first list. The heading states that since 1950, all incumbents with an approval rating of 50% or higher leading up to an election have won, whereas almost all presidents with approval ratings lower than 50% have lost. However, Bush Jr has an approval rate below 50 (in the first list), but he still won (margin is 2.4)

# Insert code or written answer here

Part (e)

# Insert code or written answer here

Part (f)

# Insert code or written answer here