Sebelum melanjutkan bagian ke-2, anda harus memahami model fitting bagian 1 terlebih dahulu

Model Fitting

Selain menggunakan grafik biasa, kita juga dapat menggunakan grafik bergambar / Contour Plot tapi sebelum itu, kita harus inisialisasi terlebih dahulu data dan environment agar dapat diproses dengan mudah

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
Cars <- read.csv("http://www.mosaic-web.org/go/datasets/used-hondas.csv")
head(Cars)
##   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

Sebagai contoh, disini saya akan menggunakan data bawaan mosaic tentang data otomotif Honda. Berikut fungsi model fitting-nya :

HargaMobil <- fitModel(
  Price ~ A + B * Age + C * Mileage, data = Cars
)

Perbandingan data ‘Price’, ‘Age’, dan ‘Mileage’

Berikut grafik menggunakan contour plot :

contour_plot(
  HargaMobil(Age = age, Mileage = miles) ~ age + miles,
  domain(age=2:8, miles=range(0, 60000)))

Sebagai contoh, mari fokus pada kontur di 17.000. Setiap kombinasi usia dan mil yang jatuh pada kontur ini menghasilkan harga mobil yang sama: 17.000. Kemiringan kontur memberi tahu Anda pertukaran antara jarak tempuh dan usia. Lihatlah dua titik pada kontur yang berbeda 10.000 mil. Perbedaan usia yang sesuai adalah sekitar 1,5 tahun. Jadi, saat membandingkan dua mobil dengan harga yang sama, penurunan jarak tempuh sebesar 10.000 diimbangi dengan peningkatan usia 1,5 mil.

Sebagai perbandingan lainnya, berikut contoh kedua :

HargaMobil2 <- fitModel(
  Price ~ A + B * Age + C * Mileage + D * Age * Mileage,
  data = Cars)

Bentuk konturnya sedikit berbeda dengan di carPrice1(); mereka sedikit menonjol ke atas. menafsirkan kontur seperti itu membutuhkan sedikit latihan. Lihatlah wilayah kecil di salah satu kontur. Kemiringan kontur memberi tahu Anda trade-offantara jarak tempuh dan usia. Untuk melihatnya, lihat kontur 17.000 yang melewati usia = 6 tahun dan jarak tempuh = 10.000 mil. Sekarang lihat kontur 17.000 dengan jarak tempuh nol. Dalam bergerak sepanjang kontur, harga tetap konstan. (Begitulah kontur didefinisikan: titik di mana harganya sama, dalam hal ini 17.000.) Menurunkan jarak tempuh sejauh 10.000 mil diseimbangkan dengan menambah usia kurang dari satu tahun. (Kontur 17.000 memiliki titik nol jarak tempuh dan 6,8 tahun.) Cara lain untuk mengatakan ini adalah bahwa efek peningkatan usia 0,8 tahun sama dengan penurunan jarak tempuh 10.000 mil .

Sekarang lihat kontur $17.000 yang sama pada usia nol (yaitu, di ujung kiri grafik). Penurunan jarak tempuh sebesar 10.000 peningkatansesuai dengan usia 1,6 tahun. Dengan kata lain, menurut model, untuk mobil yang lebih baru kepentingan relatif antara jarak tempuh vs. usia lebih rendah daripada mobil yang lebih tua. Untuk mobil berusia nol, 10.000 mil bernilai 1,6 tahun, tetapi untuk mobil berusia enam tahun, 10.000 mil hanya bernilai 0,8 tahun.

Kurva dan Model Linier

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 “pas”.

Sebagai contoh, saya akan menggunakan dataset utilities bawaan mosaic Berikut Inisialisasi-nya :

Util = read.csv("http://www.mosaic-web.org/go/datasets/utilities.csv")
gf_point(dur ~ temp, data = Util)

Dari dataset diatas, ada banyak fungsi yang dapat kita buat Kita juga dapat menyesuaikan fungsi dengan data menggunakan fungsi project() Berikut Contohnya :

project(ccf ~ temp + 1, data = Util)
## (Intercept)        temp 
##  253.098208   -3.464251
project(temp ~ dur + 1, data = Util)
## (Intercept)         dur 
##   85.040838   -1.168906

Operator project() memberikan nilai skalar. Fungsi pemasangan terbaik itu sendiri dibangun dengan menggunakan nilai skalar ini untuk menggabungkan fungsi yang terlibat.

Berikut contoh model :

model = makeFun(85.040838 - 1.168906 * dur ~ dur)
gf_point(dur ~ temp, data=Util) %>%
  slice_plot(model(temp) ~ temp)

Selain itu, anda juga dapat melakukan perhitungan kalkulus

Berikut contohnya :

project(dur ~ temp + sqrt(temp) + 1, data=Util)
## (Intercept)        temp  sqrt(temp) 
##  26.6542747  -0.1371513   1.5161618

Berikut contoh modelnya :

model2 <- makeFun(26.6542747 + 1.5161618 * temp - 12.21*sqrt(temp) ~ temp)
gf_point(dur ~ temp, data=Util) %>%
  slice_plot(model2(temp) ~ temp)

Operator project() mengambil serangkaian vektor. Saat menyesuaikan fungsi ke data, vektor ini berasal dari kumpulan data sehingga perintah harus mengacu pada nama besaran seperti yang muncul di kumpulan data, misalnya, dur atau temp. Anda diperbolehkan melakukan operasi pada besaran tersebut, misalnya pada contoh sqrt di atas, untuk membuat vektor baru

Berikut contoh menggunakan contour plot :

project(dur ~ temp + 1, data=Util)
## (Intercept)        temp 
## 31.30607106 -0.02100896
project(temp ~ dur + 1, data=Util)
## (Intercept)         dur 
##   85.040838   -1.168906
f1 <- makeFun(31.30607106 - 0.02100896*temp + 85.040838*dur ~ temp & dur)
contour_plot(
  f1(temp, dur) ~ temp + dur,
  domain(dur = range(1, 10), temp = range(1, 100))
)