#Membuat sekumpulan mekanisme dasar yang dijalankan secara simultan
function(arglist){
expr
return(value)
}
## function(arglist){
## expr
## return(value)
## }
#Return value
angka_acak1=function(n,pw)
{x=runif(n)
y=runif(n)
z=(x+y)^pw
return(z)
}
set.seed(99);angka_acak1(10,2)
## [1] 1.2848885 0.3834500 0.7710617 2.6549864 1.4952244 2.5818218 1.0594851
## [8] 0.1577382 0.2080764 0.1283080
angka_acak2=function(n,pw)
{x=runif(n)
y=runif(n)
z=(x+y)^pw
return(list(x,y,z))
}
set.seed(99);angka_acak2(10,2)
## [[1]]
## [1] 0.5847119 0.1137817 0.6842647 0.9925088 0.5349936 0.9666141 0.6714276
## [8] 0.2945777 0.3583630 0.1753148
##
## [[2]]
## [1] 0.54881739 0.50545170 0.19383647 0.63690411 0.68780009 0.64019077
## [7] 0.35788536 0.10258500 0.09779092 0.18288626
##
## [[3]]
## [1] 1.2848885 0.3834500 0.7710617 2.6549864 1.4952244 2.5818218 1.0594851
## [8] 0.1577382 0.2080764 0.1283080
angka_acak3=function(n=10,pw=2)
{x=runif(n)
y=runif(n)
z=(x+y)^pw
return(z)
}
set.seed(99);angka_acak3()
## [1] 1.2848885 0.3834500 0.7710617 2.6549864 1.4952244 2.5818218 1.0594851
## [8] 0.1577382 0.2080764 0.1283080
angka_acak4=function()
{x=runif(n)
y=runif(n)
z=(x+y)^pw
return(z)
}
set.seed(99);
n<-5; pw<-3
angka_acak4()
## [1] 3.7334397 0.4841235 0.9378608 2.4651444 0.3583775
#menghitung median dengan fungsi instan di R
x1<-c(1,5,3,7,3,4,2,7)
x2<-c(4,3,5)
median(x1)
## [1] 3.5
median(x2)
## [1] 4
#menghitung mean dengan fungsi instan di R
mean(x1)
## [1] 4
mean(x2)
## [1] 4
#menghitung modus dengan fungsi instan di R
#Mode(x1)
Buatlah suatu fungsi untuk mencari median dari suatu vektor
median<-function(vect)
{n<-length(vect)
vects<-sort(vect)
if(n%%2 == 1) {m<-vects[(n+1)/2]}
else {m<-(vects[n/2]+vects[(n/2)+1])/2}
return(m)
}
x1<-c(1,5,3,7,3,4,2,7)
median(x1)
## [1] 3.5
Buatlah fungsi untuk mencari modus dari suatu vektor
modus<-function(vect)
{ v<-unique(vect)
f<-NULL
for(i in v)
{byk<-sum(vect==i)
f<-c(f,byk)
}
fmax<-max(f)
vf<-cbind(v,f)
mode<-vf[f==fmax,]
return(mode)
}
modus(x1)
## v f
## [1,] 3 2
## [2,] 7 2
Buatlah fungsi untuk menduga parameter pada regresi berganda!
#fungsi untuk menduga parameter pada regresi berganda
p.est<-function(A){
if(!is.matrix(A))
stop("input must be on matrix")
x1<-A[,-1]
y <-A[,1]
one<-rep(1,nrow(A))
x <-cbind(one,x1)
colnames(x)<-paste("x",1:ncol(x),sep="")
b.est<-as.vector(solve(t(x) %*% x) %*% (t(x) %*% y)) #b.est(beta duga)=(XtX)*(XtY)
names(b.est)<-paste("b",0:(length(b.est)-1),sep="") #memberi nama b.est dengan b0, b1, b2
fitted.value<-as.vector(x%*%b.est)
error<-as.vector(y-fitted.value) #nilai error nya
names(fitted.value)<-names(error)<-1:nrow(A)
list(beta.est=b.est,fit.val=fitted.value,error=error)
}
#data nya
Pendapatan<-c(3.5,3.2,3.0,2.9,4.0,2.5,2.3)
Biaya.Iklan<-c(3.1,3.4,3.0,3.2,3.9,2.8,2.2)
Jumlah.Warung<-c(30,25,20,30,40,25,30)
X<-cbind(Pendapatan,Biaya.Iklan,Jumlah.Warung)
p.est(X)
## $beta.est
## b0 b1 b2
## -0.21381852 0.89843390 0.01745279
##
## $fit.val
## 1 2 3 4 5 6 7
## 3.094910 3.277176 2.830539 3.184754 3.988185 2.738116 2.286320
##
## $error
## 1 2 3 4 5 6
## 0.40508982 -0.07717642 0.16946108 -0.28475357 0.01181483 -0.23811608
## 7
## 0.01368033
model<-lm(Pendapatan~Biaya.Iklan+Jumlah.Warung)
model$coefficients
## (Intercept) Biaya.Iklan Jumlah.Warung
## -0.21381852 0.89843390 0.01745279
model$fitted.values
## 1 2 3 4 5 6 7
## 3.094910 3.277176 2.830539 3.184754 3.988185 2.738116 2.286320
model$residuals
## 1 2 3 4 5 6
## 0.40508982 -0.07717642 0.16946108 -0.28475357 0.01181483 -0.23811608
## 7
## 0.01368033
three.M <-function(vect){
mean <-sum(vect)/length(vect)
median <-(sort(vect)[floor((length(vect)+1)/2)]
+sort(vect)[ceiling((length(vect)+1)/2)]) /2
modus <- table(vect)[table(vect)==max(table(vect))]
return(list(mean=mean,median=median,modus=modus))
}
#mean, median dan modus dari x1
x1<-c(1,5,3,7,3,4,2,7)
three.M(x1)
## $mean
## [1] 4
##
## $median
## [1] 3.5
##
## $modus
## vect
## 3 7
## 2 2
#mean, median dan modus dari x
set.seed(123)
x<-rbinom(100,10,0.5)
x
## [1] 4 6 5 7 7 2 5 7 5 5 8 5 6 5 3 7 4 2 4 8 7 6 6 9 6 6 5 5 4 3 8 7 6 6 2 5 6
## [38] 4 4 4 3 5 5 4 3 3 4 5 4 7 2 5 6 3 5 4 3 6 7 4 6 3 5 4 6 5 6 6 6 5 6 6 6 0
## [75] 5 4 5 5 4 3 4 6 5 6 3 5 8 7 7 4 3 6 4 6 4 4 6 3 5 5
three.M(x)
## $mean
## [1] 4.99
##
## $median
## [1] 5
##
## $modus
## vect
## 5 6
## 24 24
A1 <- c(1:10)
class(A1)
## [1] "integer"
A2 <- matrix(A1,2,5)
class(A2)
## [1] "matrix" "array"
A3 <- 1:12
A3
## [1] 1 2 3 4 5 6 7 8 9 10 11 12
A4 <- letters[1:12]
A4
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l"
B1 <- data.frame(A3,A4)
B1
class(B1)
## [1] "data.frame"
B1$A4
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l"
A5 <- 10+A3+rnorm(12)
A5
## [1] 11.25332 11.97145 12.95713 15.36860 14.77423 17.51647 15.45125 18.58461
## [9] 19.12385 20.21594 21.37964 21.49768
#membuat model linear
B2 <- lm(A5~A3)
class(B2)
## [1] "lm"
methods(class=class(B2))
## [1] add1 alias anova case.names coerce
## [6] confint cooks.distance deviance dfbeta dfbetas
## [11] drop1 dummy.coef effects extractAIC family
## [16] formula hatvalues influence initialize kappa
## [21] labels logLik model.frame model.matrix nobs
## [26] plot predict print proj qr
## [31] residuals rstandard rstudent show simulate
## [36] slotsFromS3 summary variable.names vcov
## see '?methods' for accessing help and source code
summary(B2)
##
## Call:
## lm(formula = A5 ~ A3)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.70634 -0.37935 -0.03672 0.38335 1.32502
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 10.39462 0.51345 20.25 1.91e-09 ***
## A3 0.96614 0.06976 13.85 7.51e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.8343 on 10 degrees of freedom
## Multiple R-squared: 0.9504, Adjusted R-squared: 0.9455
## F-statistic: 191.8 on 1 and 10 DF, p-value: 7.514e-08
names(B2)
## [1] "coefficients" "residuals" "effects" "rank"
## [5] "fitted.values" "assign" "qr" "df.residual"
## [9] "xlevels" "call" "terms" "model"
B2$coefficients
## (Intercept) A3
## 10.3946172 0.9661381
class(obj) <- “class.name”
Mobil1 <- list(Nama="Toyota", Panjang=3.5, Lebar=2,Kecepatan=180)
Mobil1
## $Nama
## [1] "Toyota"
##
## $Panjang
## [1] 3.5
##
## $Lebar
## [1] 2
##
## $Kecepatan
## [1] 180
class(Mobil1)
## [1] "list"
class(Mobil1) <- "mobil"
Mobil1
## $Nama
## [1] "Toyota"
##
## $Panjang
## [1] 3.5
##
## $Lebar
## [1] 2
##
## $Kecepatan
## [1] 180
##
## attr(,"class")
## [1] "mobil"
Mobil2 <- list(Nama="Suzuki", Panjang=1,Lebar=1.8, Kecepatan=150)
Mobil2
## $Nama
## [1] "Suzuki"
##
## $Panjang
## [1] 1
##
## $Lebar
## [1] 1.8
##
## $Kecepatan
## [1] 150
class(Mobil2) <- "mobil"
Mobil2
## $Nama
## [1] "Suzuki"
##
## $Panjang
## [1] 1
##
## $Lebar
## [1] 1.8
##
## $Kecepatan
## [1] 150
##
## attr(,"class")
## [1] "mobil"
Mobil <- function(Nama,Panjang,Lebar,Kecepatan){
if(Panjang<2 || Lebar<1.5 || Kecepatan<80)
stop("atribut tidak sesuai")
Mobil <- list(Nama=Nama, Panjang=Panjang,Lebar=Lebar, Kecepatan=Kecepatan)
class(Mobil) <- "mobil"
Mobil
}
Mobil3 <- Mobil("Daihatsu", 2.1, 1.9, 120)
Mobil3
## $Nama
## [1] "Daihatsu"
##
## $Panjang
## [1] 2.1
##
## $Lebar
## [1] 1.9
##
## $Kecepatan
## [1] 120
##
## attr(,"class")
## [1] "mobil"
class(Mobil3)
## [1] "mobil"
#Mobil4 <- Mobil("Proton", 2, 1.8, 70)
#jika ini dijalankan hasilnya error : atribut tidak sesuai
#Cara langsung (tidak direkomendasikan)
Mobil2$Nama
## [1] "Suzuki"
Mobil3$Panjang
## [1] 2.1
#Dengan fungsi aksesor
nama <- function(objek) objek$Nama
kecepatan <- function(objek) objek$Kecepatan
Panjang <- function(objek) objek$Panjang
nama(Mobil1)
## [1] "Toyota"
nama(Mobil2)
## [1] "Suzuki"
Panjang(Mobil3)
## [1] 2.1
kecepatan(Mobil3)
## [1] 120
function(…){…}
print.mobil <- function(objek)
{print(cat("Nama : ", nama(objek), "\n",
"Kecepatan : ", kecepatan(objek),
sep="")
)
}
Mobil1
## Nama : Toyota
## Kecepatan : 180NULL
fungsibaru <- function (objek) UseMethod("fungsibaru")
setClass("car",
representation(Nama="character",
Panjang="numeric",
Lebar="numeric",
Kecepatan="numeric"))
Car1 <- new("car", Nama="Toyota",
Panjang=3.5, Lebar=2,
Kecepatan=180)
Car1
## An object of class "car"
## Slot "Nama":
## [1] "Toyota"
##
## Slot "Panjang":
## [1] 3.5
##
## Slot "Lebar":
## [1] 2
##
## Slot "Kecepatan":
## [1] 180
(Menggunakan Fungsi Konstruktor)
Car <- function(Nama,Panjang,Lebar,Kecepatan){
if(Panjang<2 || Lebar<1.5 || Kecepatan<80)
stop("atribut tidak sesuai")
new("car", Nama=Nama, Panjang=Panjang,
Lebar=Lebar, Kecepatan=Kecepatan)
}
Car2 <- Car("Suzuki", 2.4, 1.8, 150)
Car2
## An object of class "car"
## Slot "Nama":
## [1] "Suzuki"
##
## Slot "Panjang":
## [1] 2.4
##
## Slot "Lebar":
## [1] 1.8
##
## Slot "Kecepatan":
## [1] 150
class(Car2)
## [1] "car"
## attr(,"package")
## [1] ".GlobalEnv"
class(Mobil1)
## [1] "mobil"
Car1@Nama
## [1] "Toyota"
Car2@Kecepatan
## [1] 150
nama1 <- function(objek) objek@Nama
kecepatan1 <- function(objek) objek@Kecepatan
nama1(Car1)
## [1] "Toyota"
kecepatan1(Car2)
## [1] 150
setMethod(“method”,“class.name”, function(…){…})
setMethod(show, "car", function(object) {
print(cat("Nama : ", nama1(object), "\n",
"Kecepatan : ", kecepatan1(object),
sep="")
)}
)
Car2
## Nama : Suzuki
## Kecepatan : 150NULL
setGeneric("fungsibaru",
function(objek)
standardGeneric("fungsibaru"))
## [1] "fungsibaru"
library(Ryacas)
##
## Attaching package: 'Ryacas'
## The following object is masked from 'package:stats':
##
## integrate
## The following objects are masked from 'package:base':
##
## %*%, diag, diag<-, lower.tri, upper.tri
yac_str("Integrate(x) x^2 + 4*x")
## [1] "x^3/3+2*x^2"
f1<- function(x) x^2 + 4*x
integrate(f1,lower= -10,upper=10)
## 666.6667 with absolute error < 7.6e-12
yac_str("Integrate(t) (t^4)*exp^(-t)")
## [1] "(4*((3*(((-2)*((t*exp^(-t))/Ln(exp)+exp^(-t)/Ln(exp)^2))/Ln(exp)-(t^2*exp^(-t))/Ln(exp)))/Ln(exp)-(t^3*exp^(-t))/Ln(exp)))/Ln(exp)-(t^4*exp^(-t))/Ln(exp)"
f2<- function(t) t^4*exp(-t)
integrate(f2, lower=0, upper=Inf)
## 24 with absolute error < 2.2e-05
gamma(5)
## [1] 24
Carilah titik minimum dari fungsi f(x) = 4x4-2x3-3x !
f3 <- function(x) 4*x^4-2*x^3-3*x
x3 <- seq(-1,1.5,by=0.1)
plot(x3,f3(x3),type="l")
optim(par=c(-0.5),fn=f3)
## Warning in optim(par = c(-0.5), fn = f3): one-dimensional optimization by Nelder-Mead is unreliable:
## use "Brent" or optimize() directly
## $par
## [1] 0.728418
##
## $value
## [1] -1.832126
##
## $counts
## function gradient
## 36 NA
##
## $convergence
## [1] 0
##
## $message
## NULL
Carilah turunan pertama dan kedua dari f(x) = x^2+3x
fx <- expression(x^2+3*x)
D(fx,"x") #menggunakan D
## 2 * x + 3
D(D(fx,"x"),"x")
## [1] 2
Carilah diferensial dari f(x) = x^2 +1, untuk x=2
xturunan <- deriv(~x^2+1, "x") #menggunakan deriv, karena deriv dapat melakukan evaluasi
x<-2
eval(xturunan)
## [1] 5
## attr(,"gradient")
## x
## [1,] 4
Carilah integral dari f(x)= x^3+5, dengan lower=0, upper=2
fs <-function(x) x^3
integrate(fs,0,2)
## 4 with absolute error < 4.4e-14
Carilah nilai minimum dari fungsi f(x)=(x-1/3)^2
f <- function(x,a) (x-a)^2
xmin <- optimize(f,c(0,1), tol = 0.0001, a = 1/3)
xmin
## $minimum
## [1] 0.3333333
##
## $objective
## [1] 0