Mata Kuliah : Kalkulus Dosen Pengampu : Prof. Dr. Suhartono, M.kom
Agar mempunyai ide bentuk fungsi untuk model maka perlu memilih parameter yang akan membuat fungsi model cocok untuk diamati. Proses pemilihan parameter untuk mencocokkan pengamatan dapat disebut sebagai Model Fitting
Sebagai ilustrasi, terdapat data dalam file “utilities.csv” yang mencatat suhu rata-rata setiap bulan (dalam derajat F) serta penggunaan gas alam bulanan (dalam kaki kubik, CCF)
library(mosaicCalc)
## Loading required package: mosaic
## Registered S3 method overwritten by 'mosaic':
## method from
## fortify.SpatialPolygonsDataFrame ggplot2
##
## The 'mosaic' package masks several functions from core packages in order to add
## additional features. The original behavior of these functions should not be affected by this.
##
## Attaching package: 'mosaic'
## The following objects are masked from 'package:dplyr':
##
## count, do, tally
## The following object is masked from 'package:Matrix':
##
## mean
## The following object is masked from 'package:ggplot2':
##
## stat
## The following objects are masked from 'package:stats':
##
## binom.test, cor, cor.test, cov, fivenum, IQR, median, prop.test,
## quantile, sd, t.test, var
## The following objects are masked from 'package:base':
##
## max, mean, min, prod, range, sample, sum
## Loading required package: mosaicCore
##
## Attaching package: 'mosaicCore'
## The following objects are masked from 'package:dplyr':
##
## count, tally
##
## Attaching package: 'mosaicCalc'
## The following object is masked from 'package:stats':
##
## D
Utils <- read.csv("http://www.mosaic-web.org/go/datasets/utilities.csv")
gf_point(ccf ~ temp, data = Utils) %>%
gf_labs(y = "Natural gas usage (ccf/month)",
x = "Average outdoor temperature (F)")
Salah satu fungsi yang paling sederhana dan paling umum digunakan dalam pemodelan adalah fungsi garis lurus f(x) = Ax + B. Dalam fungsi f(x), variabel x singkatan dari input, sedangkan A dan B adalah parameter. Mengatur nama input dan output agar sesuai dengan data yang ada.
Dari data utilitas, inputnya adalah temperatur, suhu. Output yang akan dimodelkan adalah CCF. Untuk menyesuaikan fungsi model dengan data, maka tuliskan rumus dengan nama input, parameter, dan output yang sesuai di tempat yang benar:
library(mosaicCalc)
f <- fitModel(ccf ~ A * temp + B, data = Utils)
Output dari fitModel() adalah fungsi dengan bentuk matematika yang sama seperti ditentukan dalam argumen pertama (ccf ~ A * temp + B) dengan nilai numerik spesifik yang diberikan terhadap paramater untuk membuat fungsi yang paling cocok dengan data. Cara fitModel() mengetahui besaran mana dalam bentuk matematika yang merupakan variabel dan mana yang disebut parameter yaitu dengan apa pun yang ada di dalam data yang digunakan untuk pemasangan adalah variabel (temp); hal-hal lain (A dan B) disebut parameter. fitModel() ccf ~ A * temp + B fitModel()temp A B
gf_point(ccf ~ temp, data = Utils) %>%
slice_plot(f(temp) ~ temp)
Untuk dapat menambahkan fungsi lain ke dalam campuran dengan mudah. Semisal, mungkin berpikir sqrt(temp) berhasil entah bagaimana. Cobalah!
library(mosaicCalc)
f2 <- fitModel(
ccf ~ A * temp + B + C *sqrt(temp),
data = Utils)
gf_point(
ccf ~ temp, data = Utils) %>%
slice_plot(f2(temp) ~ temp)
Contoh ini hanya melibatkan satu variabel input. Keseluruhan ilmu alam dan sosial, teknik yang sangat penting dan banyak digunakan adalah dengan menggunakan banyak variabel di dalam proyeksi. Sebagai ilustrasi, coba lihatlah data harga mobil Honde bekas di used-hondas.csv
Hondas <- read.csv("http://www.mosaic-web.org/go/datasets/used-hondas.csv")
head(Hondas)
## Price Year Mileage Location Color Age
## 1 20746 2006 18394 St.Paul Grey 1
## 2 19787 2007 8 St.Paul Black 0
## 3 17987 2005 39998 St.Paul Grey 2
## 4 17588 2004 35882 St.Paul Black 3
## 5 16987 2004 25306 St.Paul Grey 3
## 6 16987 2005 33399 St.Paul Black 2
Dari data diatas kumpulan data mencakup variabel dan harga akan tergantung pada jarak tempuh dan usia mobil. Berikut adalah model yang sangat sederhana yang menggunakan kedua variabel: Price Age Mileage
library(mosaicCalc)
carPrice1 <- fitModel(
Price ~ A + B * Age + C * Mileage, data = Hondas
)
Sehingga dapat memplot fungsi yang dipasang :
library(mosaicCalc)
contour_plot(
carPrice1(Age = age, Mileage = miles) ~ age + miles,
domain(age=2:8, miles=range(0, 60000)))
Lalu, ada model yang lebih canggih yang mencakup interaksi antara usia dan jarak tempuh, bahwa efek usia mungkin berbeda tergantung pada jarak tempuhnya.
library(mosaicCalc)
carPrice2 <- fitModel(
Price ~ A + B * Age + C * Mileage + D * Age * Mileage,
data = Hondas)
Sehingga bisa diplot lagi sama dengan cara yang diatas :
library(mosaicCalc)
contour_plot(
carPrice2(Age=age, Mileage=miles) ~ age + miles,
domain(age = range(0, 8), miles = range(0, 60000)))
Daftar Pustaka : https://dtkaplan.github.io/RforCalculus/