Operasi aljabar sederhana vektor numerik dengan notasi
+, -, *, /, ^, %*%, %o%
(x1 <- c(5,7,9,13))
## [1] 5 7 9 13
(x2 <- 1:4)
## [1] 1 2 3 4
mtcars
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
(x3 <- x1 + 1:2)
## [1] 6 9 10 15
(x4 <- x1 + 1:3)
## Warning in x1 + 1:3: longer object length is not a multiple of shorter object
## length
## [1] 6 9 12 14
(x44 <- x1 + 1:6)
## Warning in x1 + 1:6: longer object length is not a multiple of shorter object
## length
## [1] 6 9 12 17 10 13
vektor x3 menghasilkan nilai yang didapatkan dari \(5+1, 7+2, 9+1, 13+2\)
vektor x4 menghasilkan nilai yang didapatkan dari \(5+1, 7+2, 9+3, 13+1\)
vektor x44 menghasilkan nilai yang didapatkan dari \(5+1, 7+2, 9+3, 13+4, 5+5, 7+6\)
(x5 <- x1*x2)
## [1] 5 14 27 52
(x6 <- x1 %*% x1) #setara x'x
## [,1]
## [1,] 324
(x7 <- x1 %o% x1) #setara xx'
## [,1] [,2] [,3] [,4]
## [1,] 25 35 45 65
## [2,] 35 49 63 91
## [3,] 45 63 81 117
## [4,] 65 91 117 169
function nchar()
Berfungsi untuk menmpilkan jumlah huruf
pada character
y1 <- c("IPB University")
(n1 <- nchar(y1))
## [1] 14
(y2 <- c("Malik","Vani","Juliana","Tania"))
## [1] "Malik" "Vani" "Juliana" "Tania"
(n2 <- nchar(y2))
## [1] 5 4 7 5
function substr(object, k, k+n)
berfungsi untuk
mengambil elemen ke k sampai elemen ke k+n dari sebuah string
function substring(object, k)
berfungsi untuk mengambil
elemen ke k sampai elemen terakhir atau sampai batas yang ditentukan
dari sebuah string
(y3 <- substr(y1,11,14))
## [1] "sity"
(y4 <- substring(y1,8))
## [1] "versity"
(y5 <- substring(y1,1,5))
## [1] "IPB U"
(Z1 <- matrix(1:6,2,3))
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
(Z2 <- matrix(1:6,3,2,byrow=T))
## [,1] [,2]
## [1,] 1 2
## [2,] 3 4
## [3,] 5 6
(Z3 <- matrix(6:9,2,2))
## [,1] [,2]
## [1,] 6 8
## [2,] 7 9
function t()
berfungsi mengubah matriks yang tadinya Z1
menjadi seperti matriks Z2 pada contoh di atas.
t(Z1)
## [,1] [,2]
## [1,] 1 2
## [2,] 3 4
## [3,] 5 6
function %*%()
berfungsi untuk perkalian matrik
dim(nxm)* matriks dim(mxn) menjadi matriks dimensi (nxn)
(Z4 <- Z1 %*% Z2)
## [,1] [,2]
## [1,] 35 44
## [2,] 44 56
(Z4a <- Z2 %*% Z1)
## [,1] [,2] [,3]
## [1,] 5 11 17
## [2,] 11 25 39
## [3,] 17 39 61
(Z5 <- Z3 * Z4) # hanya bisa digunakan untuk perkalian matrik dimensi sama dim(nxn)*dim(nxn)
## [,1] [,2]
## [1,] 210 352
## [2,] 308 504
function solve()
mengeluarkan nilai invers matriks
(INVZ <- solve(Z4))
## [,1] [,2]
## [1,] 2.333333 -1.833333
## [2,] -1.833333 1.458333
(INVZ %*% Z4)
## [,1] [,2]
## [1,] 1 2.842171e-14
## [2,] 0 1.000000e+00
(h <- c(10,11))
## [1] 10 11
(p <- solve(Z4,h)) #solusi SPL Zp=h
## [1] 3.166667 -2.291667
e <- eigen(Z4) #eigen value & eigen vector dr Z4
e$values #akses eigen values
## [1] 90.7354949 0.2645051
e[[2]] #akses eigen vectors
## [,1] [,2]
## [1,] 0.6196295 -0.7848945
## [2,] 0.7848945 0.6196295
Z4
## [,1] [,2]
## [1,] 35 44
## [2,] 44 56
h
## [1] 10 11
a<-0
for(i in 1:5) {
b<-a+i
print(b)
a<-b }
## [1] 1
## [1] 3
## [1] 6
## [1] 10
## [1] 15
mencetak b (b=a+i) dimana diawali dari a=0, dan hasil dari b di-switch menjadi a dan diulang sampai i=5
i<-1
z<-1
while(z<15)
{ y<-z+i
z<-y
print(z)
i<-i+1}
## [1] 2
## [1] 4
## [1] 7
## [1] 11
## [1] 16
selama z < 15, maka y=z+i (dimana i dan z dimulai dari 1). Lalu hasil y di switch menjadi z dan di cetak, kemudian i=i+1, diulang terus sampai z<15
i<-1
m<-2
repeat
{ m<-m+i
print(m)
i<-i+1
if(m>15)
break}
## [1] 3
## [1] 5
## [1] 8
## [1] 12
## [1] 17
dilakukan perulangan dimana m+i=m (i dimulai dari 1 dan m dimulai dari 2). lalu cetak hasil m, dan i=i+1. Dilakukan looping, jika m>15 maka diberhentikan proses pengulangan dengan fungsi break.
x <- 1:40
y <- rnorm(40,5,1)
plot(x,y,type="p")
plot(x,y,type="o")
plot(x,y,type="n")
plot(x,y,type="p",xlab="Sumbu x",ylab="Sumbu y",
main="Bilangan Acak Normal",col=2,pch=16)
plot(x,y,type="p",xlab="Sumbu x",ylab="Sumbu y",
main="Bilangan Acak Normal",col=rainbow(40),
pch=16,cex=2,xlim=c(0,50),ylim=c(2.5,7.5))
#menambahkan amatan
x1 <- 41:50
y1 <- rnorm(10,5,1)
points(x1,y1,cex=2)
x2 <- rep(40.5,20)
y2 <- seq(min(c(y,y1)),max(c(y,y1)),length=20)
lines(x2,y2,col=4,lwd=2,lty=2) #ketebalan garisnya 2, dan tipe garis putus-putus
abline(h=mean(y),col="red",lwd=2.5)#menambahkan garis lurus berdasarkan: fungsi y=a+bx, horisontal, dan vertikal
abline(a=2,b=1/10,col="maroon3",lwd=2,lty=2)
#menambahkan tanda panah
arrows(x0=30,y0=3.5,x1=40,y1=mean(y)-.1,lwd=2)
#menambahkan tulisan
text(x=29,y=3.3,labels="Titik potong",cex=0.7) #menambahkan label tanda panah
text(x=3,y=7.3,labels="Data awal",cex=0.7)
text(x=46,y=7.3,labels="Data baru",cex=0.7)
plot(sin,-pi, 2*pi) #membuat plot dengan fungsi sinus dengan panjang dari -p sampai 2*pi
plot(table(rpois(100,5)),type="h",col="red",lwd=1,main="rpois(100,lambda=5)")
a1 <- 1:25 # a1 yaitu 1 sampai 25
a2 <- rnorm(25,4,2) #membangkitkan bilangan acak normal sebaran normal sebanyak 25, dengan mean=4, st.dev=2
plot(a1,a2,pch="x",main="x") #plot dengan simbol titik/pch yaitu "x"
#karena bilangan acak, maka hasil plot tiap menjalankan fungsi akan berbeda-beda
plot(a1,a2,type="n",main="X")
text(a1,a2,labels=paste("x",1:25,sep=""),col=rainbow(25),cex=0.8)
x <- rchisq(100,df=4) #membangkitkan bilangan acak sebaran chi-square sebanyak 100 dan derajat bebas=4
hist(x,freq=FALSE,ylim=c(0,0.2)) #membuat histogram
curve(dchisq(x,df=4),col=2,lty=2,lwd=2,add=TRUE) #membuat kurva berdasarkan data sebaran x
## Menggabungkan grafik dalam 1 frame
par(mfrow=c(2,2)) #Menggabungkan plot membagi layout menjadi 2 kolom dan 2 baris
plot(1:40,y,type="p",xlab="Sumbu x",ylab="Sumbu y", main="Bilangan Acak Normal",col=2,pch=16)
plot(sin,-pi, 2*pi)
plot(table(rpois(100,5)),type="h",col="red",lwd=1,main="rpois(100,lambda=5)")
plot(a1,a2,type="n",main="W")
text(a1,a2,labels=paste("w",1:25,sep=""), col=rainbow(25),cex=0.8)
yb <- rnorm(100,5,1)
split.screen(c(2,2))
## [1] 1 2 3 4
screen(3)
boxplot(yb)
title("Boxplot Bilangan Acak Normal",cex.main=0.7)
screen(4)
xb <- 1:100
plot(xb,yb,type="l",lwd=2,col="blue")
title("Line Plot Bilangan Acak Normal",cex.main=0.7)
screen(2)
hist(yb,freq=FALSE,main=NULL,ylim=c(0,0.5))
x <- yb
curve(dnorm(x,5,1),col="red",lty=2,lwd=2,add=TRUE)
title("Histogram Bilangan Acak Normal",cex.main=0.7)
screen(1)
plot(xb,yb,pch=16,col=rainbow(100))
title("Scatter Plot Bilangan Acak Normal",cex.main=0.7)
Membangkitkan Membangkitkan bilangan acak Eksponensial
eks <- function(n,lambda){
U <- runif(n)
X <- -log(1-U)/lambda
return(X)
}
yy1 <- eks(1000,3) #inverse transform method
yy2 <- rexp(1000,rate=3) #fungsi bawaan R
par(mfrow=c(1,2))
hist(yy1,main="Exp dari Inverse Transform")
hist(yy2,main="Exp dari fungsi rexp")
Bangkitkan bilangan acak yang memiliki fkp \(f_Y (y) = 〖3y〗^2;0 < y < 1\) menggunakan acceptance-rejection method!
ar <- function(n,x0,x1,f) {
xx <- seq(x0,x1,length=10000) #baris bilangan dari x0 sampai x1 dengan 10000 titik
c <- max(f(xx)) #nilai maksimum dari fungsi f(xx)
terima <- 0; iterasi <- 0 #menyimpan berapa banyak iterasi yang dibutuhkan dan yg termasuk ke dalam kriteria
hasil <- numeric(n)
while(terima<n) { #menjalankan fungsi selama terima < n
x <- runif(1,x0,x1) #membangkitkan bilangan seragam dari x0 sampai x1
y1<- runif(1,0,c) #membangkitkan bilangan seragam dari 0 sampai c
y2<- f(x) #nilai f(x) untuk setiap x yang dibangkitkan
if(y1<=y2) { #jika y1<=y2, maka
terima <- terima+1
hasil[terima]<-x } #hasil x disimpan pada vektor hasil
iterasi <- iterasi+1 }
list(hasil=hasil,iterasi=iterasi) #hasil dari iterasi disimpan dalam bentuk list
}
set.seed(10)
f <- function(x) {3*x^2} #f(x)
yyy <- ar(100,0,1,f) #membangkitkan 100 bilangan dari 0 sampai 1 pada f(x)
yyy
## $hasil
## [1] 0.8647212 0.7751099 0.8382877 0.7707715 0.5355970 0.8613824 0.2036477
## [8] 0.7979930 0.7438394 0.3443435 0.9837322 0.6935082 0.6331153 0.8880315
## [15] 0.7690405 0.6483695 0.8795432 0.9360689 0.7233519 0.7620444 0.9868082
## [22] 0.8760261 0.7240640 0.8140516 0.5588949 0.8900940 0.7456896 0.8480646
## [29] 0.8703302 0.8223331 0.8508123 0.7709219 0.8953595 0.5803863 0.5982260
## [36] 0.9235285 0.7367755 0.6898170 0.8301572 0.9293209 0.9095163 0.5347576
## [43] 0.3478601 0.8759762 0.7286815 0.8749293 0.6988356 0.8312562 0.5572238
## [50] 0.6647687 0.7400502 0.9806898 0.3800746 0.7553169 0.5184889 0.8879149
## [57] 0.9177773 0.8084086 0.8537441 0.4232184 0.7604306 0.3405763 0.3886568
## [64] 0.4774175 0.5387605 0.9485434 0.7124685 0.9081691 0.9457656 0.7716899
## [71] 0.6946655 0.5368832 0.8481593 0.8242752 0.5123742 0.3152032 0.9924487
## [78] 0.9327120 0.9892809 0.6283590 0.5254605 0.8810815 0.5291748 0.5765517
## [85] 0.7231807 0.8761180 0.3995670 0.8986123 0.9335217 0.7859216 0.7784128
## [92] 0.6955333 0.9060413 0.9916424 0.4729846 0.9770567 0.9386110 0.9959093
## [99] 0.8543663 0.8309547
##
## $iterasi
## [1] 322
par(mfrow=c(1,1)) #membuat layout 1 kolom 1 baris
hist(yyy$hasil, main="f(x)=3*x^2", prob=T) #membuat histogram dari f(x) untuk 0 sampai 1
x <- seq(0, 1, 0.01)
lines(x, f(x), lwd=2, col="salmon") #menambah garis
Jika \(X~U(0,1)\) menggunakan \(Y = b - a X + a\) maka \(Y~U(a,b)\) Membangkitkan bilangan acak \(Y~U(3,5)→ Y = 2X + 3\)
x <- runif(1000)
y <- 2*x+3
X1 <- runif(25,10,25) #membangkitkan data sebaran seragam sebanyak 25 bilangan
X2 <- runif(25,90,200) #membangkitkan data sebaran seragam sebanyak 25 bilangan
Y <- 10 + 2.3*X1 + 0.7*X2 + rnorm(25,0,9) #B0=10, b1=2.3, b2=0.7,
Membangun model regresi \[Y = β_0 + β_1 X_1+ε\]
model1 <- lm(Y~X1)
summary(model1) #Mengeluarkan summary model
##
## Call:
## lm(formula = Y ~ X1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -31.950 -19.772 3.546 11.854 42.348
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 126.249 20.449 6.174 2.68e-06 ***
## X1 1.582 1.197 1.321 0.199
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 22.39 on 23 degrees of freedom
## Multiple R-squared: 0.07054, Adjusted R-squared: 0.03013
## F-statistic: 1.746 on 1 and 23 DF, p-value: 0.1994
Membangun model regresi \[Y = β_0 +β_2 X_2+ ε\]
model2 <- lm(Y~X2)
summary(model2)
##
## Call:
## lm(formula = Y ~ X2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -20.3390 -6.3293 -0.9062 7.3238 18.3845
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 57.17447 10.47219 5.460 1.50e-05 ***
## X2 0.65054 0.06989 9.307 2.91e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 10.64 on 23 degrees of freedom
## Multiple R-squared: 0.7902, Adjusted R-squared: 0.7811
## F-statistic: 86.63 on 1 and 23 DF, p-value: 2.909e-09
Membangun model regresi \[Y = β_0 +β_1 X_1+ β_2 X_2+ε\]
model3 <- lm(Y~X1+X2)
summary(model3)
##
## Call:
## lm(formula = Y ~ X1 + X2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -14.427 -4.128 1.935 4.599 14.271
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 23.04448 10.61313 2.171 0.040968 *
## X1 1.91913 0.41507 4.624 0.000132 ***
## X2 0.66522 0.05099 13.045 7.87e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.747 on 22 degrees of freedom
## Multiple R-squared: 0.8936, Adjusted R-squared: 0.8839
## F-statistic: 92.38 on 2 and 22 DF, p-value: 1.98e-11
Membangun model regresi \[Y = β_0 +β(X_1: X_2)+ε\]
model4 <- lm(Y~X1:X2)
summary(model4)
##
## Call:
## lm(formula = Y ~ X1:X2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -20.498 -10.310 1.911 6.178 26.300
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 88.214450 8.683298 10.16 5.67e-10 ***
## X1:X2 0.026421 0.003418 7.73 7.69e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 12.25 on 23 degrees of freedom
## Multiple R-squared: 0.7221, Adjusted R-squared: 0.71
## F-statistic: 59.75 on 1 and 23 DF, p-value: 7.692e-08
Membangun model regresi \[Y = β_0 +β(X_1* X_2)+ε\]
model5 <- lm(Y~X1*X2)
summary(model5)
##
## Call:
## lm(formula = Y ~ X1 * X2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -14.575 -2.181 1.381 4.613 13.372
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 49.47190 30.96181 1.598 0.1250
## X1 0.39617 1.72632 0.229 0.8207
## X2 0.47063 0.22009 2.138 0.0444 *
## X1:X2 0.01128 0.01241 0.909 0.3736
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.778 on 21 degrees of freedom
## Multiple R-squared: 0.8976, Adjusted R-squared: 0.883
## F-statistic: 61.37 on 3 and 21 DF, p-value: 1.458e-10
R2 <- matrix(c(summary(model1)$r.squared,
summary(model1)$adj.r.squared,
summary(model2)$r.squared,
summary(model2)$adj.r.squared,
summary(model3)$r.squared,
summary(model3)$adj.r.squared,
summary(model4)$r.squared,
summary(model4)$adj.r.squared,
summary(model5)$r.squared,
summary(model5)$adj.r.squared), 5, byrow=T)
colnames(R2)<-c("R2","R2.adj"); R2*100
## R2 R2.adj
## [1,] 7.054021 3.012891
## [2,] 79.019982 78.107807
## [3,] 89.359436 88.392112
## [4,] 72.205875 70.997435
## [5,] 89.762323 88.299798
coef(model3) # Mengeluarkan nilai coefisien model 3
## (Intercept) X1 X2
## 23.0444800 1.9191267 0.6652184
confint(model3) #Mengeluarkan selang kepercayaan untuk pendugaan parameter
## 2.5 % 97.5 %
## (Intercept) 1.0341929 45.054767
## X1 1.0583153 2.779938
## X2 0.5594629 0.770974
cbind(coef(model3), confint(model3)) #Menggabungkan kedua hasil
## 2.5 % 97.5 %
## (Intercept) 23.0444800 1.0341929 45.054767
## X1 1.9191267 1.0583153 2.779938
## X2 0.6652184 0.5594629 0.770974
anova(model3) #Mencari anova model 3
## Analysis of Variance Table
##
## Response: Y
## Df Sum Sq Mean Sq F value Pr(>F)
## X1 1 875.3 875.3 14.585 0.0009369 ***
## X2 1 10212.9 10212.9 170.171 7.87e-12 ***
## Residuals 22 1320.3 60.0
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
par(mfrow=c(2,2)); plot(model3) #Mengeluarkan plot model 3 yang dapat dilakukan untuk pengecekan asumsi