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
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
A. PARAMETER VERSUS VARIABEL
Yakni perbedaan Newton antara a, b, c, dan x, y, z.
B. PARAMETER FUNGSI PERMODELAN
Memerikan parameterisasi eksponensial, sinus, hukum pangkat.
Idenya adalah untuk membuat argumen ke fungsi matematika berdimensi.
Parameter dan logaritma – Kita dapat mengambil log apa pun yang kita suka. Satuan muncul sebagai konstanta.
C. POLINOMIAL DAN PARAMETER
Setiap parameter memiliki dimensinya sendiri.
D. PARAMETER DAN makeFun()
E. FUNGSI TANPA PARAMETER : splines dan smooths
“Smoothers” dan “splines” adalah dua jenis fungsi tujuan umum yang dapat menangkap pola dalam data, tetapi tidak ada bentuk aljabar sederhana. Membuat fungsi seperti itu sangat mudah, selama Anda dapat membebaskan diri dari gagasan bahwa fungsi harus selalu memiliki rumus.
Smoother dan splines tidak ditentukan oleh bentuk dan parameter aljabar, tetapi oleh data dan algoritma. Sebagai ilustrasi, pertimbangkan beberapa data sederhana. Berikut kumpulan data Loblollyberisi 84 pengukuran pengukuran usia dan tinggi pinus loblolly.
library(mosaicCalc)
gf_point(height ~ age, data=datasets::Loblolly)
Pada gambar grafik diatas :
f1 <- spliner(height ~ age, data = datasets::Loblolly)
## Warning in regularize.values(x, y, ties, missing(ties)): collapsing to unique
## 'x' values
f1(age = 12)
## [1] 33.21075
f2 <- connector(height ~ age, data = datasets::Loblolly)
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values
f2(age = 12)
## [1] 32.68271
Kita dapat membuat grafiknya :
gf_point(height ~ age, data = datasets::Loblolly) %>%
slice_plot(f1(age) ~ age) %>%
slice_plot(f2(age) ~ age, color="red")
Anda bahkan dapat “menyelesaikan” nya, misalnya menemukan usia di mana ketinggian akan menjadi 35 kaki:
findZeros(f1(age) - 45 ~ age, xlim=range(2,30))
## age
## 1 16.9566
findZeros(f2(age) - 45 ~ age, xlim=range(5,40))
## age
## 1 17
f2
## function (age)
## {
## x <- get(fnames[2])
## if (connect)
## SF(x)
## else SF(x, deriv = deriv)
## }
## <environment: 0x000002306c78c9b0>
Fungsi konektor spline dan linier sangat mirip, kecuali untuk rentang input di luar rentang data. Namun, dalam rentang data tersebut, kedua jenis fungsi tersebut tepat berada di tengah setiap kelompok usia.
Spline dan konektor tidak selalu sesuai dengan yang Anda inginkan, terutama bila data tidak dibagi menjadi kelompok-kelompok terpisah, seperti data pinus loblolly. Misalnya, trees.csvkumpulan data adalah pengukuran volume, ketebalan, dan tinggi pohon ceri hitam. Pohon-pohon ditebang untuk diambil kayunya, dan minat dalam melakukan pengukuran adalah untuk membantu memperkirakan berapa banyak volume kayu yang dapat digunakan yang dapat diperoleh dari sebuah pohon, berdasarkan lingkar (yaitu, keliling) dan tinggi. Ini akan berguna, misalnya, dalam memperkirakan berapa nilai uang sebuah pohon. Namun, tidak seperti data pinus loblolly, data ceri hitam tidak melibatkan pohon yang jatuh dengan baik ke dalam kelompok yang ditentukan.
Cherry <- datasets::trees
gf_point(Volume ~ Girth, data = Cherry)
Membuat spline atau konektor linier:
g1 = spliner(Volume ~ Girth, data = Cherry)
## Warning in regularize.values(x, y, ties, missing(ties)): collapsing to unique
## 'x' values
g2 = connector(Volume ~ Girth, data = Cherry)
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values
slice_plot(g1(x) ~ x, domain(x = 8:18)) %>%
slice_plot(g2(x) ~ x, color ="red") %>%
gf_point(Volume ~ Girth, data = Cherry) %>%
gf_labs(x = "Girth (inches)")
Jenis fungsi yang berbeda, lebih halus.
g3 <- smoother(Volume ~ Girth, data = Cherry, span=1.5)
gf_point(Volume~Girth, data=Cherry) %>%
slice_plot(g3(Girth) ~ Girth) %>%
gf_labs(x = "Girth (inches)")
Smoother diberi nama yang baik: mereka membangun fungsi smooth yang mendekati data. Anda memiliki kendali atas seberapa mulus fungsi tersebut. Parameter hiper span yang mengatur ini:
g4 <- smoother(Volume ~ Girth, data=Cherry, span=1.0)
gf_point(Volume~Girth, data = Cherry) %>%
slice_plot(g4(Girth) ~ Girth) %>%
gf_labs(x = "Girth (inches)", y = "Wood volume")
seringkali Anda ingin menangkap hubungan di mana ada lebih dari satu variabel sebagai input. Smoother melakukan ini dengan sangat baik; cukup tentukan variabel mana yang akan menjadi input.
g5 <- smoother(Volume ~ Girth+Height,
data = Cherry, span = 1.0)
gf_point(Height ~ Girth, data = Cherry) %>%
contour_plot(g5(Girth, Height) ~ Girth + Height) %>%
gf_labs(x = "Girth (inches)",
y = "Height (ft)",
title = "Volume (ft^3)")
Saat Anda membuat konektor yang lebih halus atau spline atau linier, ingat aturan ini:
Anda memerlukan bingkai data yang berisi data.
Anda menggunakan rumus dengan variabel yang Anda inginkan sebagai output dari fungsi di sisi kiri tilde, dan variabel input di sisi kanan.
Fungsi yang dibuat akan memiliki nama input yang cocok dengan variabel yang Anda tentukan sebagai input. (Untuk saat ini, hanya smootherakan menerima lebih dari satu variabel input.)
Kelancaran suatu smootherfungsi dapat diatur oleh spanargumen. Rentang 1,0 biasanya cukup mulus. Kesalahannya adalah 0,5.
Saat membuat spline, Anda memiliki opsi untuk mendeklarasikan monotonic=TRUE. Ini akan mengatur hal-hal untuk menghindari benjolan asing dalam data yang menunjukkan pola naik yang stabil atau pola turun yang stabil.
Saat Anda ingin memplot suatu fungsi, tentu saja Anda perlu memilih rentang untuk nilai input. Seringkali masuk akal untuk memilih rentang yang sesuai dengan data yang menjadi dasar fungsi. Anda dapat menemukan ini dengan range()perintah, misalnya:
range(Cherry$Height)
## [1] 63 87
Daftar Pustaka: https://dtkaplan.github.io/RforCalculus/parameters-and-functions.html#functions-without-parameters-splines-and-smoothers