No.3

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

No.4

set.seed(123) 
data <- rnorm(100, mean=70, sd=5)  
max_value <- max(data)
max_value
## [1] 80.93666

No.5

set.seed(123) 
categories <- c("A", "B", "C") 
probabilities <- c(0.2, 0.3, 0.5) 

sample_data <- sample(categories, size=100, replace=TRUE, prob=probabilities)


count_b <- sum(sample_data == "B")
count_b
## [1] 29

No.6

set.seed(123)
x <- rnorm(100)  
y <- 2*x + rnorm(100)  


model <- lm(y ~ x)
summary(model)
## 
## Call:
## lm(formula = y ~ x)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.9073 -0.6835 -0.0875  0.5806  3.2904 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.10280    0.09755  -1.054    0.295    
## x            1.94753    0.10688  18.222   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.9707 on 98 degrees of freedom
## Multiple R-squared:  0.7721, Adjusted R-squared:  0.7698 
## F-statistic:   332 on 1 and 98 DF,  p-value: < 2.2e-16

No.7

set.seed(123)  
data <- rnorm(100, mean=50, sd=10)

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

No.8

set.seed(123)

x <- c(5, 7, 8, 10, 12)

n_bootstrap <- 1000

bootstrap_means <- numeric(n_bootstrap)

for (i in 1:n_bootstrap) {
  sample_x <- sample(x, size = length(x), replace = TRUE)
  bootstrap_means[i] <- mean(sample_x)
}

mean_bootstrap <- mean(bootstrap_means)

mean_bootstrap
## [1] 8.3572

No.9

set.seed(123)

data <- rexp(100, rate = 1)

median_data <- median(data)

median_data
## [1] 0.847754

No.10

# reg <- lm(y ~ x)

No.11

set.seed(123)

data <- runif(100, min = 20, max = 80)

data_range <- max(data) - min(data)

data_range
## [1] 59.6187

No.12

set.seed(123)

data <- rbinom(100, size = 10, prob = 0.3)

mean_data <- mean(data)

mean_data
## [1] 3.02

No.13

set.seed(123)

data <- rpois(100, lambda = 4)

table_data <- table(data)
modus <- as.numeric(names(table_data)[which.max(table_data)])

modus
## [1] 2

No.14

set.seed(123)

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

mean_succes <- mean(data)

mean_succes
## [1] 2.989

No.15

set.seed(123)

data <- rnorm(100)

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

outliers <- sum(data < (mean_data - 2 * sd_data) | data > (mean_data + 2 * sd_data))

outliers
## [1] 5

No.16

set.seed(123)

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

n_bootstrap <- 10000

bootstrap_medians <- numeric(n_bootstrap)

for (i in 1:n_bootstrap) {
  sample_x <- sample(x, size = length(x), replace = TRUE)
  bootstrap_medians[i] <- median(sample_x)
}

ci <- quantile(bootstrap_medians, probs = c(0.025, 0.975))

ci
##  2.5% 97.5% 
##     8    18

No.17

set.seed(123)

data <- rnorm(100, mean = 0, sd = 1)

filtered_data <- data[data > 1]

length(filtered_data)
## [1] 17

No.18

rnorm(100, 70, 15) 
##   [1]  59.34390  73.85326  66.29962  64.78686  55.72572  69.32458  58.22643
##   [8]  44.98087  64.29660  83.78495  61.36980  79.11946  45.73176  69.16657
##  [15]  77.79111  74.51730  71.58514  60.38941  57.25443  54.63807  71.76470
##  [22]  55.78788  62.64164  66.15862  97.65793  60.22075  73.53080  71.16941
##  [29]  55.57215  68.93038  91.66826  76.77256  70.61849  63.66255  39.20129
##  [36]  86.97006  48.09040  81.09921  98.63655  48.34160  80.52677  66.06704
##  [43]  46.41784  47.27999  45.97696  62.03640  48.07367  80.31875 101.50163
##  [50]  50.69454  81.81608  81.53563  74.98304  54.87435  68.20821  65.79407
##  [57]  78.44484  64.41342  84.65460  64.38129  85.79067  54.26234  51.09767
##  [64] 118.61560  63.74714  74.47341  79.54855  62.74329  77.75293  75.53447
##  [71]  66.76929  70.97940  69.48899 101.92678  58.87996  53.56006  70.56683
##  [78]  74.65721  76.54785  63.12452  54.05011  88.94778  64.75524  57.01731
##  [85]  66.45581  67.04236  86.64880  71.27106  81.31081  62.51062  73.21668
##  [92]  65.12971  71.41875  56.56955  50.33798  99.95820  79.01063  51.23093
##  [99]  60.83251  52.21780

No.19

set.seed(123)

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

combined_data <- c(data1, data2)

mean_combined <- mean(combined_data)

mean_combined
## [1] 90.99007

No.20

set.seed(123)

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

model <- lm(y ~ x)

slope <- coef(model)[["x"]]

slope
## [1] 1.918029

No.21

# Distribusi Poisson

No.22

# Distribusi Normal

No.23

# Efektif untuk memodelkan jumlah kejadian dalam interval waktu tetap

No.24

# Poisson mengasumsikan kedatangan independen, yang tidak terpenuhi

No.25

# Efisien untuk memodelkan proporsi keberhasilan dari sejumlah percobaan