Bagian 6 Fungsi fitting ke data Proses pemilihan parameter untuk mencocokkan pengamatan disebutpemasangan model.Sebagai ilustrasi, data dalam file “utilitas.csv” mencatat suhu rata-rata setiap bulan (dalam derajat F) serta penggunaan gas alam bulanan (dalam kaki kubik, ccf). Ada, seperti yang Anda duga, hubungan yang kuat antara keduanya.
Utils <- read.csv("http://www.mosaic-web.org/go/datasets/utilities.csv")
library(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
gf_point(ccf ~ temp, data = Utils) %>%
gf_labs(y = "Natural gas usage (ccf/month)",
x = "Average outdoor temperature (F)")
Dengan data utilitas, input adalah suhu, suhu. Output yang akan
dimodelkan adalah ccf. Agar sesuai dengan fungsi model dengan data, Anda
menuliskan rumus dengan nama input, parameter, dan output yang sesuai di
tempat yang tepat:
library(mosaic)
f <- fitModel(ccf ~ A * temp + B, data = Utils)
Apa pun yang terkandung dalam data yang digunakan untuk pemasangan adalah variabel (di sini); hal-hal lain (di sini, dan) adalah parameter.fitModel()ccf ~ A * temp + BfitModel()tempAB
Anda dapat menambahkan fungsi lain ke dalam campuran dengan mudah. Misalnya, Anda mungkin berpikir bahwa entah bagaimana ada di sana. Cobalah!sqrt(temp)
f2 <- fitModel(
ccf ~ A * temp + B + C *sqrt(temp),
data = Utils)
library(mosaicCalc)
## 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
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 proyeksi. Sebagai ilustrasi, lihat
data harga mobil Honda bekas.”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
carPrice1 <- fitModel(
Price ~ A + B * Age + C * Mileage, data = Hondas
)
contour_plot(
carPrice1(Age = age, Mileage = miles) ~ age + miles,
domain(age=2:8, miles=range(0, 60000)))
car_price2 <- makeFun(22137 - 7.495e2*age - 9.414e-2*miles +
3.450e-3*age*miles ~ age & miles)
contour_plot(
car_price2(Age, Mileage) ~ Age + Mileage,
domain(Age = range(0, 10), Mileage = range(0, 100000))) %>%
gf_labs(title = "Price of car (USD)")
6.1 Kurva dan model linier Sebagai ilustrasi, data dalam file mencatat suhu rata-rata setiap bulan (dalam derajat F) serta penggunaan gas alam bulanan (dalam kaki kubik, ccf). Ada, seperti yang Anda duga, hubungan yang kuat antara keduanya.”utilities.csv”
Utilities = read.csv("http://www.mosaic-web.org/go/datasets/utilities.csv")
gf_point(ccf ~ temp, data = Utilities)
project(ccf ~ temp + 1, data = Utilities)
## (Intercept) temp
## 253.098208 -3.464251
Operator memberikan nilai skalar. Fungsi fitting terbaik itu sendiri dibangun dengan menggunakan nilai skalar ini untuk menggabungkan fungsi yang terlibat.project( )
model_fun = makeFun( 253.098 - 3.464*temp ~ temp)
gf_point(ccf ~ temp, data=Utils) %>%
slice_plot(model_fun(temp) ~ temp)
project(ccf ~ temp + sqrt(temp) + 1, data = Utils)
## (Intercept) temp sqrt(temp)
## 447.029273 1.377666 -63.208025
6.4 Fungsi eksponensial Untuk mengilustrasikan, pertimbangkan data yang menunjukkan hubungan eksponensial antara fraksi keluarga dengan dua mobil dan pendapatan:“Income-Housing.csv”
Families <- read.csv("http://www.mosaic-web.org/go/datasets/Income-Housing.csv")
gf_point(TwoVehicles ~ Income, data = Families)