1. Buatlah 100 data acak dari distribusi binomial dengan n = 10 dan p = 0.3. Hitung rata-ratanya. Berapakah nilai yang paling mendekati rata-rata tersebut? Gunakan set.seed(123)

set.seed(123)
n_populasi = 100
n_sampel = 10
p = 0.3

print(mean(data <- rbinom(n_populasi, n_sampel, p))) 
## [1] 3.02

2. Simulasikan 100 data dari distribusi eksponensial dengan rate = 1. Berapakah nilai median dari data tersebut? Gunakan set.seed(123)

set.seed(123)
rate = 1

print(median(data <- rexp(100,rate)))
## [1] 0.847754

3. Simulasikan 100 data dari distribusi uniform antara 20 sampai 80. Berapa nilai range (max - min) yang paling mendekati hasil simulasi? Gunakan set.seed(123)

set.seed(123)

n = 100

data = runif(n, min = 20, max = 80)

range = max(data) - min(data)
range
## [1] 59.6187

4. Buatlah sebuah regresi linear sederhana dari data berikut: x <- 1:10 y <- 2 * x + rnorm(10, 0, 1) Berapa estimasi koefisien slope dari model lm(y ~ x)? Gunakan set.seed(123)

set.seed(123)

x <- 1:10
y <- 2 * x + rnorm(10,0,1)

print(lm(y~x))
## 
## Call:
## lm(formula = y ~ x)
## 
## Coefficients:
## (Intercept)            x  
##      0.5255       1.9180

5. Lakukan bootstrap 1000 kali terhadap sampel x <- c(5, 7, 8, 10, 12). Hitung rata-rata dari setiap bootstrap, lalu ambil rata-rata dari hasil tersebut. Nilai mendekati berapa? Gunakan set.seed(123)

set.seed(123)
x <- c(5, 7, 8, 10, 12)

sample.size <- 5 

n.samples <- 1000 

bootstrap.results <- c() # Creating an empty vector to hold the results

for (i in 1:n.samples)
{
 obs <- sample(1:sample.size, replace=TRUE)
 bootstrap.results[i] <- mean(x[obs]) # Mean of the bootstrap sample
}

mean(bootstrap.results)
## [1] 8.3572

6. Diberikan data:x <- rnorm(100)y <- 2*x + rnorm(100). Manakah kode berikut yang benar untuk melihat ringkasan dari model regresi?

x <- rnorm(100)
y <- 2*x + rnorm(100)
summary(lm(y~x))
## 
## Call:
## lm(formula = y ~ x)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.3669 -0.5885  0.0229  0.6142  2.9141 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.13560    0.09861  -1.375    0.172    
## x            1.85267    0.10156  18.243   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9851 on 98 degrees of freedom
## Multiple R-squared:  0.7725, Adjusted R-squared:  0.7702 
## F-statistic: 332.8 on 1 and 98 DF,  p-value: < 2.2e-16

7. Manakah kode berikut yang benar untuk mensimulasikan 100 nilai dari distribusi normal dengan mean = 70 dan sd = 15?

set.seed(123)
mean = 70
sd = 15
n = 100
rnorm(100,70,15)
##   [1]  61.59287  66.54734  93.38062  71.05763  71.93932  95.72597  76.91374
##   [8]  51.02408  59.69721  63.31507  88.36123  75.39721  76.01157  71.66024
##  [15]  61.66238  96.80370  77.46776  40.50074  80.52034  62.90813  53.98264
##  [22]  66.73038  54.60993  59.06663  60.62441  44.69960  82.56681  72.30060
##  [29]  52.92795  88.80722  76.39696  65.57393  83.42688  83.17200  82.32372
##  [36]  80.32960  78.30876  69.07132  65.41056  64.29293  59.57940  66.88124
##  [43]  51.01905 102.53434  88.11943  53.15337  63.95673  63.00017  81.69948
##  [50]  68.74946  73.79978  69.57180  69.35694  90.52903  66.61344  92.74706
##  [57]  46.76871  78.76921  71.85781  73.23912  75.69459  62.46515  65.00189
##  [64]  54.72137  53.92313  74.55293  76.72315  70.79506  83.83401 100.75127
##  [71]  62.63453  35.36247  85.08608  59.36199  59.67987  85.38357  65.72840
##  [78]  51.68923  72.71955  67.91663  70.08646  75.77921  64.44010  79.66565
##  [85]  66.69270  74.97673  86.45259  76.52772  65.11103  87.23211  84.90256
##  [92]  78.22595  73.58098  60.58141  90.40979  60.99611 102.80999  92.98916
##  [99]  66.46449  54.60369

8. Buat 100 data dari distribusi normal N(0,1), lalu ambil hanya data yang lebih besar dari 1. Berapa banyak data yang tersisa? Gunakan set.seed(123)

set.seed(123)

data_select <- c()
i <- 1
for( data in rnorm(100,0,1)){
  if(data > 1){
    data_select[i] <- data
  }
  i <- i+1
}

print(data_select)
##  [1]       NA       NA 1.558708       NA       NA 1.715065       NA       NA
##  [9]       NA       NA 1.224082       NA       NA       NA       NA 1.786913
## [17]       NA       NA       NA       NA       NA       NA       NA       NA
## [25]       NA       NA       NA       NA       NA 1.253815       NA       NA
## [33]       NA       NA       NA       NA       NA       NA       NA       NA
## [41]       NA       NA       NA 2.168956 1.207962       NA       NA       NA
## [49]       NA       NA       NA       NA       NA 1.368602       NA 1.516471
## [57]       NA       NA       NA       NA       NA       NA       NA       NA
## [65]       NA       NA       NA       NA       NA 2.050085       NA       NA
## [73] 1.005739       NA       NA 1.025571       NA       NA       NA       NA
## [81]       NA       NA       NA       NA       NA       NA 1.096839       NA
## [89]       NA 1.148808       NA       NA       NA       NA 1.360652       NA
## [97] 2.187333 1.532611

9. Simulasikan 100 data dari distribusi Poisson dengan λ = 4. Berapa nilai modus dari data yang dihasilkan? Gunakan set.seed(123)

set.seed(123)
lambda = 4
n = 100


data <- rpois(n,lambda)
print(data)
##   [1]  3  6  3  6  7  1  4  7  4  4  8  4  5  4  2  7  3  1  3  8  7  5  5 10  5
##  [26]  5  4  4  3  2  8  7  5  6  1  4  5  2  3  2  2  3  3  3  2  2  2  4  3  6
##  [51]  1  4  6  2  4  2  2  5  7  3  5  2  3  3  6  4  6  6  6  4  5  5  5  0  4
##  [76]  2  3  4  3  2  3  5  3  6  2  4  9  7  6  2  2  5  3  5  3  2  5  2  4  4

10. Dari data rnorm(100), berapa banyak data yang berada di luar ±2 SD? Gunakan set.seed(123)

set.seed(123)
data <- rnorm(100)

mean_data <- mean(data)
sd_data <- sd(data)

lower_bound <- mean_data - 2 * sd_data
upper_bound <- mean_data + 2 * sd_data

outliers <- sum(data < lower_bound | data > upper_bound)
outliers
## [1] 5

11. Simulasikan 50 data dari N(100,15) dan 50 data dari N(80,10), lalu gabungkan. Berapa rata-rata dari seluruh data gabungan? Gunakan set.seed(123)

set.seed(123)

data1 <- rnorm(50, mean = 100, sd = 15)
data2 <- rnorm(50, mean = 80, sd = 10)

data_gabungan <- c(data1, data2)

mean_gabungan <- mean(data_gabungan)
mean_gabungan
## [1] 90.99007

12. Manakah kode berikut yang benar untuk membuat model regresi linear dari y terhadap x?

reg <- lm(y~x)

13. Buat data berikut: x <- c(5, 8, 12, 13, 15, 18, 21) Lakukan bootstrap sebanyak 10.000 kali untuk menghitung interval kepercayaan 95% dari median data. Manakah interval berikut yang paling mendekati hasil? Gunakan set.seed(123)

set.seed(123)

x <- c(5, 8, 12, 13, 15, 18, 21)

n_sample <- 10000
medians <- numeric(n_sampel)

for (i in 1:n_sample) {
  sample_x <- sample(x, replace = TRUE)
  medians[i] <- median(sample_x)
}

ci <- quantile(medians, probs = c(0.025, 0.975))
ci
##  2.5% 97.5% 
##     8    18

14. Dengan menggunakan fungsi rbinom, simulasikan 1000 percobaan dengan n = 10 dan p = 0.3. Berapa rata-rata jumlah sukses? Gunakan set.seed(123)

set.seed(123)

data_binom <- rbinom(1000, size = 10, prob = 0.3)

mean_sukses <- mean(data_binom)
mean_sukses
## [1] 2.989

15. Buatlah simulasi data dengan 3 variabel prediktorx1 <- rnorm(100) x2 <- x1 + rnorm(100, 0, 0.01) x3 <- rnorm(100) y <- 3 + 2x1 - 1x3 + rnorm(100) Buat model lm(y ~ x1 + x2 + x3). Berdasarkan output model, manakah pernyataan berikut yang paling tepat? Gunakan set.seed(42)

set.seed(42)

x1 <- rnorm(100)
x2 <- x1 + rnorm(100, 0, 0.01)
x3 <- rnorm(100)
y <- 3 + 2*x1 - 1*x3 + rnorm(100)

model <- lm(y ~ x1 + x2 + x3)

summary(model)
## 
## Call:
## lm(formula = y ~ x1 + x2 + x3)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.7944 -0.5867 -0.1038  0.6188  2.3280 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.03150    0.08914  34.007   <2e-16 ***
## x1           1.17483    9.89434   0.119    0.906    
## x2           0.88292    9.89031   0.089    0.929    
## x3          -1.03161    0.08882 -11.614   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.8867 on 96 degrees of freedom
## Multiple R-squared:  0.8927, Adjusted R-squared:  0.8893 
## F-statistic: 266.2 on 3 and 96 DF,  p-value: < 2.2e-16

16. Gunakan sample() untuk membuat 100 data kategorik (“A”, “B”, “C”) dengan probabilitas masing-masing 0.2, 0.3, 0.5. Berapa banyak kategori “B”? Gunakan set.seed(123)

set.seed(123)

# Buat data kategorik
kategori <- sample(c("A", "B", "C"), size = 100, replace = TRUE, prob = c(0.2, 0.3, 0.5))

# Hitung jumlah kategori "B"
jumlah_B <- sum(kategori == "B")
jumlah_B
## [1] 29

17. Dari data rnorm(100, mean=70, sd=5), berapakah nilai maksimum dari data tersebut? Gunakan set.seed(123)

set.seed(123)
max(rnorm(100,70,5))
## [1] 80.93666

18. Buat 100 data acak dari distribusi normal dengan mean 50 dan sd 10. Hitung standar deviasi dari data tersebut. Gunakan set.seed(123)

set.seed(123)

data <- rnorm(100, mean = 50, sd = 10)

sd_data <- sd(data)
sd_data
## [1] 9.128159