Seperti judulnya, dalam buku ini kita akan menggunakan bahasa komputer R untuk mengimplementasikan operasi kalkulus bersama dengan operasi terkait seperti grafik dan penyelesaian.
Topik kalkulus pada dasarnya adalah tentang fungsi matematika dan operasi yang dilakukan pada mereka. Konsep “fungsi matematika” adalah sebuah ide. Jika kita akan menggunakan bahasa komputer untuk bekerja dengan fungsi matematika, kita perlu menerjemahkannya ke dalam beberapa entitas dalam bahasa komputer. Artinya, kita memerlukan konstruksi bahasa untuk merepresentasikan fungsi dan kuantitas yang diambil fungsi sebagai input dan dihasilkan sebagai output.
Kompleksitas yang disebutkan di bagian sebelumnya berasal dari penggunaan dan situasi dunia nyata di mana kita ingin dapat menerapkan ide matematis fungsi. Input yang diambil oleh fungsi dan output yang dihasilkannya belum tentu berupa angka. Seringkali, mereka adalah kuantitas .
Dalam buku ini kita akan menggunakan fungsi dan kalkulus untuk bekerja dengan kuantitas dunia nyata. Kita tidak bisa mengabaikan dimensi dan satuan. Sayangnya, bahasa komputer utama seperti R dan Python dan JavaScript tidak menyediakan cara sistematis untuk menangani dimensi dan unit secara otomatis. Di R, misalnya, kita dapat dengan mudah menulis
y <- 12
Kurangnya notasi komputer yang tepat untuk mewakili kuantitas berdimensi dengan satuannya, kita memerlukan beberapa cara lain untuk melacak berbagai hal.
Berikut adalah apa yang akan kita lakukan. Saat kita merepresentasikan besaran di komputer, kita akan menggunakan nama besaran untuk mengingatkan kita apa dimensi dan satuannya. Misalkan kita ingin, misalnya, untuk mewakili pendapatan tahunan keluarga. Pilihan yang masuk akal adalah menggunakan nama seperti incomeatau income_per_yearatau family_income. Kami bahkan mungkin memberikan unit dalam nama, misalnya family_income_euros_per_year. Tetapi biasanya yang kami lakukan adalah mendokumentasikan unit secara terpisah untuk pembaca manusia.
R, seperti kebanyakan bahasa komputer, memiliki konstruksi pemrograman untuk mewakili operasi yang mengambil satu atau lebih input dan menghasilkan output. Di R, ini disebut “fungsi.” Di R, semua yang Anda lakukan melibatkan fungsi, baik secara eksplisit maupun implisit.
Mari kita lihat versi R dari fungsi matematika, eksponensial. Fungsi diberi nama expdan kita dapat melihat pemrograman yang dikandungnya.
## function (x) .Primitive("exp")
Tidak banyak di sana, kecuali notasi komputer. Dalam R, fungsi dapat dibuat dengan kata kunci function. Misalnya, untuk membuat fungsi yang menerjemahkan pendapatan tahunan menjadi pendapatan harian, kita dapat menulis:
as_daily_income <- function(yearly_income) { yearly_income / 365 }
Nama yang dipilih untuk fungsi, as_daily_income, adalah arbitrer. Kita bisa saja menamai fungsi itu apa saja. (Ini adalah praktik yang baik untuk memberikan nama fungsi yang mudah dibaca dan ditulis dan mengingatkan Anda tentang fungsi tersebut.)
Setelah kata kunci function, ada sepasang tanda kurung. Di dalam tanda kurung adalah nama yang diberikan ke input ke fungsi. Hanya ada satu masukan as_daily_incomeyang kami panggil yearly_incomehanya untuk membantu mengingatkan kami apa fungsi yang dimaksudkan untuk dilakukan. Tapi kita bisa memanggil input apa saja.
Setelah kata kunci functiondan tanda kurung di mana argumen didefinisikan datang sepasang kurung kurawal {dan }berisi beberapa pernyataan R. Pernyataan-pernyataan ini adalah badan fungsi dan berisi instruksi untuk perhitungan yang akan mengubah input menjadi output.
Inilah fitur mengejutkan dari bahasa komputer seperti R … Nama yang diberikan untuk argumen tidak masalah sama sekali, asalkan digunakan secara konsisten di badan fungsi. Jadi programmer mungkin telah menulis fungsi R dengan cara ini:
as_daily_income <- function(x) { x / 365 }
Semua versi as_daily_income()wasiat yang berbeda ini melakukan hal yang persis sama dan digunakan dengan cara yang persis sama, terlepas dari nama yang diberikan untuk argumen tersebut. 2 Seperti ini:
## [1] 168.1151
Seringkali, fungsi memiliki lebih dari satu argumen. Nama-nama argumen dicantumkan di antara tanda kurung setelah kata kunci function, seperti ini:
as_daily_income <- function(yearly_income, duration) { yearly_income / 365 }
Dalam kasus seperti itu, untuk menggunakan fungsi kita harus menyediakan semua argumen. Jadi, dengan definisi dua argumen terbaru dari as_daily_income(), penggunaan berikut menghasilkan pesan kesalahan:
## [1] 168.1151
Sebagai gantinya, tentukan kedua argumen:
as_daily_income(61362, 365)
## [1] 168.1151
Satu lagi aspek argumen fungsi di R … Argumen apa pun dapat diberi nilai
default . Sangat mudah untuk melihat cara kerjanya dengan sebuah
contoh:
as_daily_income <- function(yearly_income, duration = 365) { yearly_income / duration }
Dengan nilai default untuk durationfungsi dapat digunakan dengan satu atau dua argumen:
## [1] 168.1151
as_daily_income(61362, duration = 366)
## [1] 167.6557
Ingatlah bahwa nama-nama yang dipilih oleh pemrogram suatu fungsi bersifat arbitrer. Anda akan menggunakan fungsi dengan cara yang persis sama meskipun namanya berbeda. Demikian pula, saat menggunakan fungsi, Anda dapat memilih sendiri ekspresi apa yang akan menjadi nilai argumen. Misalnya, Anda ingin menghitung100e−2.5100e−2.5. Mudah:
100 * exp(-2.5)
## [1] 8.2085
Dalam menulis perhitungan, ada baiknya untuk memperjelas dan menjelaskan arti dari setiap besaran yang digunakan dalam perhitungan. Jadi, alih-alih 100 * exp(-2.5), Anda mungkin ingin menulis:
dose <- 100 # mg duration <- 10 # days time_constant <- 4 # days dose * exp(- duration / time_constant)
## [1] 8.2085
Lebih baik lagi, Anda bisa mendefinisikan fungsi yang melakukan perhitungan untuk Anda:
drug_remaining <- function(dose, duration, time_constant) { dose * exp(- duration / time_constant) }
Kemudian, melakukan perhitungan untuk situasi tertentu yang dijelaskan di atas adalah masalah penggunaan fungsi:
drug_remaining(dose = 100, duration = 10, time_constant = 4)
## [1] 8.2085
Kami telah menggunakan fungsi R untuk mewakili perhitungan jumlah dari input seperti dosis dan konstanta waktu obat.
Ketika kalkulus atau operasi matematika serupa sedang dilakukan, Anda biasanya harus menentukan variabel atau variabel mana yang sedang dilakukan operasi “sehubungan dengan.” Untuk mengilustrasikannya, pertimbangkan operasi sederhana secara konseptual untuk menggambar grafik suatu fungsi. Lebih khusus, mari kita menggambar grafik berapa banyak obat yang tersisa dalam tubuh sebagai fungsi waktu sejak dosis diberikan. Farmakokinetik dasar dari proses ini dikemas dalam
Tetapi fungsi R memainkan peran yang jauh lebih besar dari itu. Fungsi digunakan untuk hampir semua hal, mulai dari membaca file data hingga menggambar grafik hingga mengetahui jenis komputer apa yang digunakan. Yang menarik bagi kami di sini adalah penggunaan fungsi untuk mewakili dan mengimplementasikan operasi kalkulus.
drug_remaining()fungsi. Jadi yang ingin kita lakukan adalah menggambar grafik drug_remaining().
Ingat bahwa drug_remaining()memiliki tiga argumen: dose, duration, dan time_constant. Grafik tertentu yang akan kita gambar menunjukkan sisa obat sebagai fungsi durasi. Artinya, operasi grafik akan sehubungan denganduration . Kami akan mempertimbangkan, katakanlah, dosis 100 mg obat dengan konstanta waktu 4 hari, mungkin dengan melihat interval durasi dari 0 hari hingga 20 hari.
Dalam buku ini, kita akan menggunakan operasi yang disediakan oleh paket mosaicand mosaicCalcuntuk R. Operasi dari paket ini memiliki notasi yang sangat spesifik untuk diekspresikan sehubungan dengan . Notasi tersebut menggunakan karakter tilde, ~. Berikut cara menggambar grafik yang kita inginkan, menggunakan slice_plot()operasi paket:
## 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
drug_remaining(dose = 100, time_constant = 4, duration = t) ~ t,
domain(t = 0:20))