Kalkulus by Prof. Dr. SUHARTONO, M.Kom || Izza Syahri Muharram _ 220605110073 || Teknik Informatika || UIN Maulana Malik Ibrahim Malang
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
summary(cars)
## speed dist
## Min. : 4.0 Min. : 2.00
## 1st Qu.:12.0 1st Qu.: 26.00
## Median :15.0 Median : 36.00
## Mean :15.4 Mean : 42.98
## 3rd Qu.:19.0 3rd Qu.: 56.00
## Max. :25.0 Max. :120.00
You can also embed plots, for example:
Note that the echo = FALSE
parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.
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 yang paling sederhana dan paling umum digunakan dalam pemodelan adalah fungsi garis lurus f(x) = SEBUAHx + B. Dalam fungsi f(x) variable x singkatan dari input, sedangkan A dan B adalah parameter.
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. Sepanjang ilmu alam dan sosial, teknik yang sangat penting dan banyak digunakan adalah menggunakan banyak variabel dalam sebuah proyeksi.
Misalnya pada data harga honda bekas
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
membuat fungsi dan memplotnya seperti biasa
carPrice2 <- fitModel(
Price ~ A + B * Age + C * Mileage + D * Age * Mileage,
data = Hondas)
contour_plot(
carPrice2(Age=age, Mileage=miles) ~ age + miles,
domain(age = range(0, 8), miles = range(0, 60000)))
Latihan Pada grafik di atas, konturnya vertikal.
Jawab = Setiap kontur sesuai dengan harga yang berbeda. Saat Anda melacak secara horizontal dengan Age, Anda berpindah dari satu kontur ke kontur lainnya. Namun saat Anda melacak secara vertikal dengan Mileage, Anda tidak melewati kontur. Artinya harga tidak bergantung pada Mileage, karena perubahan Mileagetidak menyebabkan perubahan harga. Tapi harga tidak berubah dengan Age.
Jawab = Saat Anda menelusuri secara horizontal, dengan Age, Anda berpindah dari kontur ke kontur: harga berubah. Jadi harga tergantung Age. Hal yang sama berlaku ketika Anda melacak secara vertikal, dengan Mileage. Jadi harga juga tergantung Mileage.
JAWAB = Lihat tanda centang pada sumbu. Dalam grafik di badan teks, Ageberjalan dari dua hingga delapan tahun. Namun dalam grafik latihan, Agehanya berjalan dari nol hingga satu tahun. Demikian pula, grafik di badan teks telah Mileageberjalan dari 0 hingga 60.000 mil, tetapi dalam grafik latihan, Mileageberjalan dari 0 hingga 1.
Kedua grafik menunjukkan fungsi yang sama, jadi keduanya “benar”. Tetapi grafik latihan ini secara visual menyesatkan. Tidak mengherankan bahwa harga tidak banyak berubah dari 0 mil menjadi 1 mil, tetapi berubah (agak) dari 0 tahun menjadi 1 tahun.
Latian 2
logPrice2 <- fitModel(
logPrice ~ A + B * Age + C * Mileage + D * Age * Mileage,
data = Hondas %>% mutate(logPrice = log10(Price)))
Sesuaikan model dan lihat kontur harga log. Apa bentuk kontur memberitahu Anda tentang apakah data memberikan bukti interaksi dalam harga log?
contour_plot(
logPrice2(Age=age, Mileage=miles) ~ age + miles,
domain(age = range(0, 8), miles = range(0, 60000)))
Latihan 3
carPrice3 <- fitModel(
Price ~ A + B * Age + C * Mileage + D * Age * Mileage +
E * Age^2 + F * Mileage^2 + G * Age^2 * Mileage +
H * Age * Mileage^2,
data = Hondas)
gf_point(Mileage ~ Age, data = Hondas, fill = NA) %>%
contour_plot(
carPrice3(Age=Age, Mileage=Mileage) ~ Age + Mileage)
Fokus hanya pada wilayah plot di mana terdapat banyak data. Apakah kontur memiliki bentuk yang diharapkan oleh akal sehat?
JAWABAN: Di mana ada banyak data, bentuk lokal kontur memang miring ke bawah dari kiri ke kanan, seperti yang diantisipasi oleh akal sehat.
KURVA DAN MODEL LINIER
library(mosaic)
Utilities = read.csv("http://www.mosaic-web.org/go/datasets/utilities.csv")
gf_point(ccf ~ temp, data = Utilities)
Sepintas, istilah “linier” dan “kurva” mungkin tampak kontradiktif.
Garis lurus, kurva tidak.
Kata linier dalam “model linier” mengacu pada “kombinasi linier,” bukan “garis lurus.” Seperti yang akan Anda lihat, Anda dapat membuat kurva rumit dengan mengambil kombinasi fungsi linier, dan menggunakan operasi proyeksi aljabar linier untuk mencocokkan kurva ini sedekat mungkin dengan data. Proses pencocokan itu disebut “menyesuaikan”.
Latihan
Utilities = read.csv("http://www.mosaic-web.org/go/datasets/utilities.csv")
project(ccf ~ 1 + temp + I(temp^2), data = Utilities)
## (Intercept) temp I(temp^2)
## 317.58743630 -6.85301947 0.03609138
ccfQuad <- makeFun(317.587 - 6.853*T + 0.0361*T^2 ~ T)
gf_point(ccf ~ temp, data = Utilities) %>%
slice_plot(ccfQuad(temp) ~ temp)
a. Pasang polinomial orde ke-3 dari versus ke data utilitas. Berapa
nilai model ini untuk suhu 32 derajat? {87.103.128, 142
,143.168.184}
ccfCubic <-
makeFun(2.551e2 - 1.427*T -
9.643e-2*T^2 + 9.6095e-4*T^3 ~ T)
gf_point(ccf ~ temp, data = Utils) %>%
slice_plot(ccfCubic(temp) ~ temp)
ccfQuad <- makeFun(1.7576e2 + 8.225*T -4.815e-1*T^2 +
7.103e-3*T^3 - 3.384e-5*T^4 ~ T)
gf_point(ccf ~ temp, data = Utils) %>%
slice_plot(ccfQuad(temp) ~ temp) %>%
gf_labs(y = "Natural gas use (ccf)", x = "Temperature (F)")
Sekitar 1 ccf. Sekitar 4 ccf. Sekitar 8 cc. Sekitar 1 derajat F. Sekitar 4 derajat F Sekitar 8 derajat F.
slice_plot(ccfQuad(temp) - ccfCubic(temp) ~ temp,
domain(temp = range(20, 60)))
Latihan 2 1. Gunakan data ini agar sesuai dengan model penghematan bahan
bakar (variabel mpg): Berapa nilai model untuk input 2000 pound?
{14.9,19.4,21.1,25.0, 28.8 ,33.9,35.2}
Cars = read.csv("http://www.mosaic-web.org/go/datasets/cardata.csv")
head(Cars)
## mpg pounds horsepower cylinders tons constant
## 1 16.9 3967.60 155 8 2.0 1
## 2 15.5 3689.14 142 8 1.8 1
## 3 19.2 3280.55 125 8 1.6 1
## 4 18.5 3585.40 150 8 1.8 1
## 5 30.0 1961.05 68 4 1.0 1
## 6 27.5 2329.60 95 4 1.2 1
project(mpg ~ pounds + 1, data = Cars)
## (Intercept) pounds
## 43.188646127 -0.007200773
// FUNGSI DENAN PARAMETER NONLINIER
Teknik aljabar linier dapat digunakan untuk menemukan kombinasi linier terbaik dari suatu himpunan fungsi. Namun, seringkali, ada parameter dalam fungsi yang muncul secara nonlinier.
// FUNGSI EKSPONENSIAL
library(mosaicCalc)
Families <- read.csv("http://www.mosaic-web.org/go/datasets/Income-Housing.csv")
gf_point(TwoVehicles ~ Income, data = Families)
Pola data menunjukkan “pembusukan” eksponensial terhadap hampir 100%
keluarga yang memiliki dua kendaraan
K adalah parameter nonlinier yang tidak diketahui – ini akan menjadi negatif untuk peluruhan eksponensial. Aljabar linier memungkinkan kita menemukan parameter linier terbaik SEBUAH dan C untuk mencocokkan data
// MENGOPTIMALKAN TEBAKAN Daripada hanya menggunakan satu tebakan untuk k, Anda dapat melihat banyak kemungkinan berbeda. Untuk melihat semuanya secara bersamaan, mari kita plot jumlah residual kuadrat sebagai fungsi dari k. Kita akan melakukan ini dengan membuat fungsi yang menghitung jumlah sisa kuadrat untuk nilai tertentu dari K.
Daftar pustaka = https://dtkaplan.github.io/RforCalculus/fitting-functions-to-data.html