Di lab ini akan fokus pada analisis sensitivitas dan simulasi Monte Carlo.
Analisis sensitivitas adalah studi tentang bagaimana ketidakpastian dalam output dari model atau sistem matematika (numerik atau sebaliknya) dapat diberikan kepada berbagai sumber ketidakpastian dalam inputnya. Kami akan menggunakan paket R lpSolveAPI seperti yang kami lakukan di laboratorium sebelumnya.
Monte Carlo Simulasi menggunakan pengambilan sampel acak berulang dari alam semesta atau populasi tertentu untuk mendapatkan hasil tertentu. Jenis simulasi ini dikenal sebagai simulasi probabilistik, dibandingkan dengan simulasi deterministik.
Contoh simulasi Monte Carlo adalah yang diterapkan untuk memperkirakan nilai pi. Simulasi didasarkan pada menghasilkan titik acak dalam kotak unit dan melihat berapa banyak titik yang termasuk dalam lingkaran yang tertutup oleh kotak unit (ditandai dengan warna merah). Semakin tinggi jumlah titik sampel semakin dekat hasilnya dengan hasil aktual. Setelah memilih 30.000 poin acak, perkiraan untuk pi jauh lebih dekat dengan nilai aktual dalam empat titik desimal presisi.
Di lab ini, kita akan mempelajari cara menghasilkan sampel acak dengan berbagai simulasi dan cara menjalankan analisis sensitivitas pada kasus penggunaan pemasaran yang tercakup sejauh ini.
Ingatlah untuk selalu menyetel direktori kerja Anda ke lokasi berkas sumber. Buka “Sesi”, gulir ke bawah ke “Atur Direktori Kerja”, dan klik ‘Ke Lokasi File Sumber’. Baca dengan cermat di bawah ini dan ikuti instruksi untuk menyelesaikan tugas dan menjawab pertanyaan apa pun. Kirimkan pekerjaan Anda ke RPubs sebagaimana dirinci dalam catatan sebelumnya.
Untuk tugas ini, mungkin menggunakan kumpulan data yang berbeda dari yang disertakan di sini. Selalu baca instruksi dengan cermat tentang Sakai. Tugas/pertanyaan yang akan diselesaikan/dijawab disorot dalam font berebal lebih besar dan dijumlahkan sesuai dengan penempatan tertentu di bagian tugas.
Untuk melakukan analisis sensitivitas, kita perlu mengunduh lagi paket lpSolveAPI kecuali Anda sudah menginstalnya di lingkungan R Anda
# Diperlukan hanya jika tidak terpasang
# Dependensi = TRUE memastikan bahwa dependensi diinstal
if(!require("lpSolveAPI",quietly = TRUE))
install.packages("lpSolveAPI",dependencies = TRUE, repos = "https://cloud.r-project.org")Kami akan mengunjungi kembali dan menyelesaikan lagi kasus pemasaran yang dibahas di kelas (juga bagian dari laboratorium sebelumnya).
# Kita mulai dengan kendala '0' dan variabel keputusan '2'. Nama objek 'lpmark' bersifat diskresi.
lpmark2 = make.lp(0, 2)
# Tentukan jenis pengoptimalan sebagai maksimum dan buang output layar ke dalam variabel 'dummy'
dummy = lp.control(lpmark2, sense="max")
# Mengatur koefisien fungsi objektif
set.objfn(lpmark2, c(275.691, 48.341))
# Menambahkan semua batasan ke model
add.constraint(lpmark2, c(1, 1), "<=", 350001)
add.constraint(lpmark2, c(1, 0), ">=", 15000)
add.constraint(lpmark2, c(0, 1), ">=", 75000)
add.constraint(lpmark2, c(2, -1), "=", 1)
add.constraint(lpmark2, c(1, 0), ">=", 0)
add.constraint(lpmark2, c(0, 1), ">=", 0)
# Memperlihatkan pengaturan masalah dalam bentuk tabular/matriks. Ini berguna untuk melihat apakah kontraints kami telah ditetapkan dengan benar.
lpmark2## Model name:
## C1 C2
## Maximize 275.691 48.341
## R1 1 1 <= 350001
## R2 1 0 >= 15000
## R3 0 1 >= 75000
## R4 2 -1 = 1
## R5 1 0 >= 0
## R6 0 1 >= 0
## Kind Std Std
## Type Real Real
## Upper Inf Inf
## Lower 0 0
## [1] 0
# Dua baris kode berikutnya akan menunjukkan hasil yang optimal.
# Pertama : Menampilkan fungsi objektif nilai optimal yaitu nilai penjualan yang optimal.
get.objective(lpmark2)## [1] 43443717
# Kedua: Menampilkan variabel keputusan nilai optimal yaitu nilai optimal untuk iklan radio dan tv.
get.variables(lpmark2) ## [1] 116667.3 233333.7
Untuk bagian sensitivitas, kami akan menambahkan dua bagian kode baru untuk mendapatkan hasil sensitivitas.
## $objfrom
## [1] -96.6820 -137.8455
##
## $objtill
## [1] 1e+30 1e+30
Hasilnya memiliki dua bagian yaitu: output berlabel objfrom menunjukkan batas bawah koefisien sementara output berlabel objtill menunjukkan batas atas. Jelaskan dengan cara bertepatan apa yang diwakili oleh hasil sensitivitas mengacu pada model pemasaran.
objfrom menunjukkan berapa jumlah terendah dari setiap varibale harus dalam rangka dari persamaan yang akan dipenuhi tanpa itu neceessarily sedang dioptimalkan dan objtill adalah jumlah yang sangat besar
# Display sensitivitas terhadap BATASAN (atau nilai sisi kanan).
# There akan menjadi total nilai m+n di mana m adalah jumlah kontraints dan n adalah jumlah variabel keputusan
get.sensitivity.rhs(lpmark2) ## $duals
## [1] 124.12433 0.00000 0.00000 75.78333 0.00000 0.00000 0.00000
## [8] 0.00000
##
## $dualsfrom
## [1] 1.125005e+05 -1.000000e+30 -1.000000e+30 -3.050010e+05 -1.000000e+30
## [6] -1.000000e+30 -1.000000e+30 -1.000000e+30
##
## $dualstill
## [1] 1.00000e+30 1.00000e+30 1.00000e+30 4.75002e+05 1.00000e+30 1.00000e+30
## [7] 1.00000e+30 1.00000e+30
Untuk latihan ini, kami hanya tertarik pada bagian pertama dari output yang diberi label dual. Jelaskan dengan cara bertepatan apa yang diwakili oleh dua hasil sensitivitas non-nol. Dalam jawaban Anda, bedakan antara kendala yang mengikat dan tidak mengikat, dan sertakan penjelasan tentang surplus / kendur, dan nilai marginal.
Hasil non nol mewakili batasan yang tidak mengikat yang berarti bahwa ketika varibale meningkat, solusi optimal tidak terpengaruh. dengan kata lain ia memiliki kendur untuk “bergerak” sementara kendala pengikatan terbatas dan akan mempengaruhi solusi optimal jika ditingkatkan. ini juga berarti bahwa ada nilai marjinal jika terikat dan oleh karena itu dipengaruhi oleh perubahan Untuk memperoleh pemahaman yang lebih baik tentang hasil sensitivitas, dan untuk mengkonfirmasi integritas perhitungan, tes independen dapat dilakukan.
Jalankan solusi program linear lagi mulai dari awal, dengan mendefinisikan objek model baru lpmark1. Semua sama, mengubah batasan anggaran hanya dengan 1 IDR dan memecahkan. Secara spesifik, semua sama, ubah batasan pertama \(X_1 + X_2 ≤ 350000\) hanya dengan 1 IDR sehingga batasan baru adalah \(X1 + X2 ≤ 350001\). Perhatikan nilai optimal untuk penjualan seperti yang diberikan oleh fungsi objektif.
Hitung perubahan diferensial dalam penjualan. Bagikan pengamatan Anda.
Saya tidak melihat perubahan penjualan.
Menjalankan pemecah program linear lagi dimulai dari awal, dengan mendefinisikan objek model baru lpmark2. Semua sama, ubah batasan keempat \(2_{X1} - X_2 = 0\) hanya dengan 1 IDR dan selesaikan. Batasan baru adalah 2X1 - X2 = 1. Perhatikan nilai optimal untuk penjualan seperti yang diberikan oleh fungsi objektif.
Hitung perubahan diferensial dalam penjualan. Bagikan pengamatan Anda.
Perbedaan meningkat antara lpmark1 dan run ini
Untuk tugas ini kita akan menjalankan simulasi Monte Carlo untuk menghitung probabilitas bahwa pengembalian harian dari S&P akan > 5%. Kami akan berasumsi bahwa pengembalian harian S&P historis mengikuti distribusi normal dengan pengembalian harian rata-rata 0,03 (%) dan simpangan baku sebesar 0,97 (%).
Untuk memulai kita akan menghasilkan 100 sampel acak dari distribusi normal. Untuk sampel yang dihasilkan, kami akan menghitung rata-rata, simpangan baku, dan kemungkinan terjadinya di mana hasil simulasi lebih besar dari 5%.
Untuk menghasilkan sampel acak dari distribusi normal, kami akan menggunakan fungsi rnorm() di R. Dalam contoh di bawah ini kami menetapkan jumlah run (atau sampel) menjadi 100.
# Jumlah simulasi / sampel
runs2 = 10000
# Generator angka acak per distribusi normal yang ditentukan dengan rata-rata yang diberikan dan simpangan baku
sims2 = rnorm(runs2,mean=0.03,sd=0.97)
# Rata-rata dihitung dari distribusi sampel acak
average2 = mean(sims2)
average2## [1] 0.04107744
## [1] 0.9695261
# Probabilitas kemunculan pada hari tertentu berdasarkan sampel akan sama dengan menghitung (atau menjumlahkan) di mana hasil sampel lebih besar dari 5% dibagi dengan jumlah total sampel.
prob2 = sum(sims2 >=0.05)/runs2
prob2## [1] 0.494
Repeat the above calculations for the case where the number of simulations/samples is equal to 1000. record the mean, standard deviation, and probability. Name all the required variables as runs1, sims1, average1, std1, and prob1.
Ulangi perhitungan di atas untuk kasus di mana jumlah simulasi/sampel sama dengan 10000. mencatat rata-rata, simpangan baku, dan probabilitas. Beri nama semua variabel yang diperlukan sebagai run2, sims2, average2, std2, dan prob2.
Daftar dalam bentuk tabular nilai untuk rata-rata, simpangan baku, dan probabilitas untuk ketiga kasus: simulasi 100, 1000, dan 10000. rata-rata -.0205 .02989 .02195 sd .995 .9843 .9624 prob .457 .491 .4855
Jelaskan bagaimana nilai berubah/berperilaku saat jumlah simulasi ditingkatkan. Apa taruhan terbaik Anda pada kemungkinan terjadi lebih besar dari 5% dan mengapa? Bagaimana ini mirip dengan kasus penggunaan gambar untuk menghitung pi yang disajikan dalam paragraf pengantar?
Secara umum, karena semakin banyak simulasi yang ada, semakin akurat prediciton sehingga simpangan baku menjadi lebih ketat dan probabilitas meningkat dari waktu ke waktu. sekitar setengah waktu akan kembali lebih besar dari 5%. yang serupa dalam arti bahwa karena lebih banyak varibal ditambahkan, semakin akurat preditions akan dan semakin representatif angka akan ot dunia nyata Latihan 2C terakhir adalah opsional bagi mereka yang tertarik untuk lebih meningkatkan pembelajaran materi pelajaran mereka, dan menyempurnakan keterampilan mereka di R. Pekerjaan Anda akan dinilai tetapi Anda tidak akan dinilai untuk latihan ini. Anda bisa mengikuti instruksi yang disajikan dalam contoh setara Video Excel di [https://www.youtube.com/watch?v=wKdmEXCvo9s]
2C) Ulangi latihan untuk pengembalian harian S&P di mana semua sama kecuali kita sekarang tertarik pada pengembalian kumulatif mingguan dan probabilitas bahwa pengembalian cummulatif mingguan lebih besar dari 5%. Atur jumlah simulasi menjadi 10000.