1.Diberikan sistem persamaan linear berikut:

\[ x_1 + 2x_2 -x_3=1 \\ 2x_1 + x_2 + 4x_3=2 \\ 3x_1 + 3x_2 + 4x_3=1 \]

Jika sistem persamaan dinyatakan dalam bentuk \(Ax=b\) maka:

A <- rbind(c(1, 2, -1),
           c(2, 1, 4),
           c(3, 3, 4))
A
##      [,1] [,2] [,3]
## [1,]    1    2   -1
## [2,]    2    1    4
## [3,]    3    3    4
cat(paste("\n invers A \n"))
## 
##  invers A
solve(A)
##           [,1]      [,2] [,3]
## [1,]  2.666667  3.666667   -3
## [2,] -1.333333 -2.333333    2
## [3,] -1.000000 -1.000000    1
cat(paste("\n solusi SPL \n"))
## 
##  solusi SPL
solve(A) %*% c(1, 2, 1)
##      [,1]
## [1,]    7
## [2,]   -4
## [3,]   -2
cat(paste("\n det A \n"))
## 
##  det A
det(A)
## [1] -3
cat(paste("\n eigen A \n"))
## 
##  eigen A
eigen(A)
## eigen() decomposition
## $values
## [1]  6.5413813 -1.0000000  0.4586187
## 
## $vectors
##             [,1]          [,2]       [,3]
## [1,] -0.07327085  7.071068e-01 -0.8373583
## [2,] -0.60096556 -7.071068e-01  0.4083692
## [3,] -0.79590940 -5.226448e-17  0.3634083

2. Berikut ini diberikan fungsi densitas distribusi Gamma \((\alpha, \beta)\):

\[f(x, \alpha, \beta)=\frac{\beta^\alpha}{\Gamma(\alpha)} x^{\alpha-1} e^{-\beta x}\]

dist_gamma <- function(x, alpha, beta) {
  hasil <- x^(alpha-1) * exp(-beta*x) * (beta^alpha)/(factorial(alpha-1))
  return(hasil)
}

cat(paste("\n nilai f(x) untuk x=1, 2, 3, 4, 5 \n"))
## 
##  nilai f(x) untuk x=1, 2, 3, 4, 5
dist_gamma(1:5, 1, 2)
## [1] 2.706706e-01 3.663128e-02 4.957504e-03 6.709253e-04 9.079986e-05
cat(paste("\n grafik f \n"))
## 
##  grafik f
curve(dist_gamma(x, 1, 2), from=0, to=10,
      ylab = "pdf", ylim=c(0, 1),
      col="lightblue", lwd=2)
grid()

3. Suatu pengamatan dapat dikategorikan sebagai pencilan (outlier) jika pengamatan (data) tersebut lebih besar dari \(Q_3 + 1.5 \times IQR\) atau lebih kecil dari \(Q_1 - 1.5 \times IQR\). Simbol \(Q_1\) adalah untuk Kuartil ke 1 dan \(Q_3\) adalah untuk Kuartil ke 3, sedangkan \(IQR\) adalah Jarak Antar Kuartil \((Q_3-Q_1)\). Buatlah fungsi R yang dapat menampilkan pencilan (jika ada) dari suatu kumpulan data

find_outlier <- function(data) {
  iqr = IQR(data)
  q1 <- quantile(data, .25)
  q3 <- quantile(data, .75)
  pencilan <- c()
  
  for (point in data) {
    if (point < q1 - 1.5*iqr  | point > q3 + 1.5*iqr) {
      pencilan <- append(pencilan, point)
    }
  }
  
  if(length(pencilan) != 0) {
    cat(paste("\n ada pencilan \n"))
    pencilan
  } else {
    cat("\n tidak ada pencilan \n")
  }
}

## generate data with outliers
data <- c(rnorm(90), rnorm(5, -10, 1), rnorm(5, 10, 1))

## find outliers
find_outlier(data)
## 
##  ada pencilan
##  [1] -10.988477  -9.978496 -10.016885 -11.322466 -11.411451  10.306696
##  [7]  10.369868  11.194572  10.901590   9.136225

4. Perusahaan Vokasi dengan saham ‘TVET’ hendak melakukan simulasi penurunan/peningkatan nilai saham selama 100 hari kedepan. Anda diminta:

data_index = c()
data_mean = c()
data_growth = c()
data_status = c()

for (index in 1:100) {
  sample <- runif(100, -1, 1)
  mean <- round(mean(sample), 2)
  
  if (index == 1) {
    growth <- NA
    status <- NA
  } else {
    
    if (abs(data_mean[index-1]) == 0.00) {
      growth <- mean * 100
    } else {
      growth <- (mean-data_mean[index-1])/(abs(data_mean[index-1])) * 100 
    }
    
    if (growth>0) {
      status <- 'increase'
    } else {
      status <- 'decrease'
    }
  }
      
  data_index <- append(data_index, paste("day", index))
  data_mean <- append(data_mean, mean)
  data_growth <- append(data_growth, round(growth, 2))
  data_status <- append(data_status, status)
}

df <- data.frame(data_index, data_mean, data_growth, data_status)
colnames(df) = c('day', 'value', 'growth (%)', 'status')

head(df)
##     day value growth (%)   status
## 1 day 1 -0.04         NA     <NA>
## 2 day 2  0.09     325.00 increase
## 3 day 3  0.07     -22.22 decrease
## 4 day 4  0.06     -14.29 decrease
## 5 day 5 -0.02    -133.33 decrease
## 6 day 6 -0.03     -50.00 decrease

5. Lakukan simulasi pada R:

simulated_value <- rexp(10000, 0.5)

exact_mean <- 1/0.5
exact_var <- 1/(0.5)^2
cat(paste("\n exact mean & exact var \n", exact_mean, " & ", exact_var))
## 
##  exact mean & exact var 
##  2  &  4
simulated_mean <- mean(simulated_value)
simulated_var <- var(simulated_value)
cat(paste("\n simulated mean & simulated var \n", simulated_mean, " & ", simulated_var))
## 
##  simulated mean & simulated var 
##  2.00090909454315  &  3.85347693713325
plot(density(simulated_value), col="blue", main="simulation vs theoritical",
     xlab="x", ylab="pdf")
curve(dexp(x, 0.5), col="red", add=TRUE)

legend("center", legend=c("simulation", "theoritical"), fill=c("blue", "red"))
grid()