Berikut adalah beberapa contoh implementasi linear aljabar pada R menggunakan paket tidyverse dan tidyquant:

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(tidyquant)
## Loading required package: PerformanceAnalytics
## Loading required package: xts
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## 
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## 
## ######################### Warning from 'xts' package ##########################
## #                                                                             #
## # The dplyr lag() function breaks how base R's lag() function is supposed to  #
## # work, which breaks lag(my_xts). Calls to lag(my_xts) that you type or       #
## # source() into this session won't work correctly.                            #
## #                                                                             #
## # Use stats::lag() to make sure you're not using dplyr::lag(), or you can add #
## # conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop           #
## # dplyr from breaking base R's lag() function.                                #
## #                                                                             #
## # Code in packages is not affected. It's protected by R's namespace mechanism #
## # Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning.  #
## #                                                                             #
## ###############################################################################
## 
## Attaching package: 'xts'
## 
## The following objects are masked from 'package:dplyr':
## 
##     first, last
## 
## 
## Attaching package: 'PerformanceAnalytics'
## 
## The following object is masked from 'package:graphics':
## 
##     legend
## 
## Loading required package: quantmod
## Loading required package: TTR
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(datasets)

Matriks: Membuat matriks pada R dapat dilakukan dengan menggunakan fungsi matrix(). Berikut adalah contoh cara membuat matriks pada R:

# Membuat matriks
matriks <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3)

# Menampilkan matriks
matriks
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6

Vektor: Membuat vektor pada R dapat dilakukan dengan menggunakan fungsi c(). Berikut adalah contoh cara membuat vektor pada R:

# Membuat vektor
x <- c(1, 2, 3)
y <- c(4, 5, 6)

# Menampilkan vektor (Outpur)
x
## [1] 1 2 3
y
## [1] 4 5 6

Operasi matematika: Perhitungan operasi matematika matriks dan vektor pada R dapat dilakukan dengan menggunakan operator -, +, *, dan /. Berikut adalah contoh cara melakukan operasi matematika pada matriks dan vektor:

# Melakukan operasi matematika pada matriks
matriks1 <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3)
matriks2 <- matrix(c(7, 8, 9, 10, 11, 12), nrow = 2, ncol = 3)

matriks1 + matriks2 # Menjumlahkan kedua matriks
##      [,1] [,2] [,3]
## [1,]    8   12   16
## [2,]   10   14   18
matriks1 - matriks2 # Mengurangkan kedua matriks
##      [,1] [,2] [,3]
## [1,]   -6   -6   -6
## [2,]   -6   -6   -6
matriks1 * matriks2 # Mengali kedua matriks
##      [,1] [,2] [,3]
## [1,]    7   27   55
## [2,]   16   40   72
matriks1 / matriks2 # Membagi kedua matriks
##           [,1]      [,2]      [,3]
## [1,] 0.1428571 0.3333333 0.4545455
## [2,] 0.2500000 0.4000000 0.5000000
# Melakukan operasi matematika pada vektor
x <- c(1, 2, 3)
y <- c(4, 5, 6)

x + y # Menjumlahkan kedua vektor
## [1] 5 7 9
x - y # Mengurangkan kedua vektor
## [1] -3 -3 -3
x * y # Mengali kedua vektor
## [1]  4 10 18
x / y # Membagi kedua vektor
## [1] 0.25 0.40 0.50

Regresi linier: Regresi linier dapat dilakukan pada R dengan menggunakan paket tidyverse dan tidyquant. Berikut adalah contoh cara melakukan regresi linier pada R:

# Memuat data iris
data(iris)

# Melakukan regresi linier sederhana
reg1 <- lm(Sepal.Length ~ Petal.Length, data = iris)

# Menampilkan hasil regresi
summary(reg1)
## 
## Call:
## lm(formula = Sepal.Length ~ Petal.Length, data = iris)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.24675 -0.29657 -0.01515  0.27676  1.00269 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   4.30660    0.07839   54.94   <2e-16 ***
## Petal.Length  0.40892    0.01889   21.65   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4071 on 148 degrees of freedom
## Multiple R-squared:   0.76,  Adjusted R-squared:  0.7583 
## F-statistic: 468.6 on 1 and 148 DF,  p-value: < 2.2e-16

Dekomposisi matriks dan PCA: Dekomposisi matriks dan analisis komponen utama (PCA) dapat dilakukan pada R dengan menggunakan paket tidyverse. Berikut adalah contoh cara melakukan dekomposisi matriks dan PCA pada R:

# Membuat matriks
m <- matrix(c(1, 2, 3, 4), nrow = 2, ncol = 2)

# Melakukan dekomposisi matriks
eigen(m)
## eigen() decomposition
## $values
## [1]  5.3722813 -0.3722813
## 
## $vectors
##            [,1]       [,2]
## [1,] -0.5657675 -0.9093767
## [2,] -0.8245648  0.4159736
# Melakukan PCA pada iris dataset
data(iris)
iris_pca <- select(iris, -Species) %>%
  scale() %>%
  prcomp()

# Menampilkan hasil PCA
summary(iris_pca)
## Importance of components:
##                           PC1    PC2     PC3     PC4
## Standard deviation     1.7084 0.9560 0.38309 0.14393
## Proportion of Variance 0.7296 0.2285 0.03669 0.00518
## Cumulative Proportion  0.7296 0.9581 0.99482 1.00000