Kelton Chapter 6 problems
- Use file from text to fit one or more probability distributions, including goodness-of-fit testing and probability plots. What’s the recommendation for a distribution to be used in the simulation model from which to generate these inter-arrival times? Provide the correct Simio expression, heading any parameterization-difference issues.
library(xlsx)
prob.06.01.df <- read.xlsx("~./GitHub/MSDA---Coursework/Data 604/Week 9 - HW/Problem_Dataset_06_01.xls", sheetIndex = 1)
library(fitdistrplus)
plotdist(prob.06.01.df$X27.88, histo = TRUE)

descdist(prob.06.01.df$X27.88, boot = 100)
summary statistics
------
min: 2.06 max: 48.65
median: 8.74
mean: 11.53122
estimated sd: 9.621378
estimated skewness: 1.968746
estimated kurtosis: 7.88031

Based on our Cullen and Frey Graph the exponential distribution is our best fit.
dis <- fitdist(prob.06.01.df$X27.88, distr = "exp")
summary(dis)
Fitting of the distribution ' exp ' by maximum likelihood
Parameters :
estimate Std. Error
rate 0.0867211 0.01354176
Loglikelihood: -141.2474 AIC: 284.4948 BIC: 286.2083
plot(dis)

In Simio it would be “Random.Exponential(0.0867211)”
- Use file from text to fit one or more probability distributions, including goodness-of-fit testing and probability plots. What’s the recommendation for a distribution to be used in the simulation model from which to generate these call-duration times? Provide the correct Simio expression, heading any parameterization-difference issues.
library(fitdistrplus)
prob.06.02.df <- read.xlsx("~./GitHub/MSDA---Coursework/Data 604/Week 9 - HW/Problem_Dataset_06_02.xls", sheetIndex = 1)
plotdist(prob.06.02.df$X36.13, histo = TRUE)

descdist(prob.06.02.df$X36.13, boot = 100)
summary statistics
------
min: 3.8 max: 27.86
median: 8.91
mean: 10.3437
estimated sd: 5.191441
estimated skewness: 1.390486
estimated kurtosis: 5.02623

dis <- fitdist(prob.06.02.df$X36.13, "gamma")
dis
Fitting of the distribution ' gamma ' by maximum likelihood
Parameters:
estimate Std. Error
shape 4.8173431 0.9716745
rate 0.4657621 0.0990183
plot(dis)

coef(dis)
shape rate
4.8173431 0.4657621
In Simio its Random.Gamma( 4.8173431 , 0.4657621 )
- Use file from text to fit one or more probability distributions, including goodness-of-fit testing and probability plots. What’s the recommendation for a distribution to be used in the simulation model from which to generate the number of extra tech-support people need for a call? Provide the correct Simio expression, heading any characterization-difference issues.
prob.06.03.df <- read.xlsx("~./GitHub/MSDA---Coursework/Data 604/Week 9 - HW/Problem_Dataset_06_03.xls", sheetIndex = 1)
library(fitdistrplus)
plotdist(prob.06.03.df$X2, histo = TRUE)

descdist(prob.06.03.df$X2, boot = 100)
summary statistics
------
min: 1 max: 8
median: 3
mean: 2.977273
estimated sd: 1.547521
estimated skewness: 0.9862332
estimated kurtosis: 4.349472

dis <- fitdist(prob.06.03.df$X2, distr = "lnorm")
summary(dis)
Fitting of the distribution ' lnorm ' by maximum likelihood
Parameters :
estimate Std. Error
meanlog 0.9541848 0.08153836
sdlog 0.5408643 0.05765544
Loglikelihood: -77.37561 AIC: 158.7512 BIC: 162.3196
Correlation matrix:
meanlog sdlog
meanlog 1 0
sdlog 0 1
plot(dis)

coef(dis)
meanlog sdlog
0.9541848 0.5408643
In Simio its Random.Lognormal(0.9541848, 0.5408643)
- Derive the inverse-CDF formula for generation random variants from a continuous uniform distribution between real numbers a and b (a < b )
CDF
\[f(x) = \int_a^{b} \frac{x-a}{b-a} dx\] Inverse
\[f^{-1}(x) = a + (b - a) x\]
- Derive the inverse-CDF formula for generation random variate from a Weibull distribution. Look up its definition (including its CDF) in one of the references, either book or online, cited in this chapter. Check the simio definition in its documentation to be sure you have your formula parameterized proper.
\[f(x) = 1 - e^{1-(1/\alpha)x^\beta} \] \[f^{-1}(x)= (-\alpha ln(1-u))^{1/\beta}\]
- Problem in text:
library(tidyverse)
Loading tidyverse: ggplot2
Loading tidyverse: tibble
Loading tidyverse: tidyr
Loading tidyverse: readr
Loading tidyverse: purrr
Loading tidyverse: dplyr
package <U+393C><U+3E31>tidyr<U+393C><U+3E32> was built under R version 3.4.2package <U+393C><U+3E31>purrr<U+393C><U+3E32> was built under R version 3.4.2package <U+393C><U+3E31>dplyr<U+393C><U+3E32> was built under R version 3.4.2Conflicts with tidy packages -----------------------------------------------------------------------------------------------------------------
filter(): dplyr, stats
lag(): dplyr, stats
select(): dplyr, MASS
produce <- NULL
produce$oats <- list(cost = 1.05,
revenue = 1.29,
max_demand = 10,
sizes = c(0, .5 , 1, 1.5, 2, 3, 4, 5, 7.5, 10),
prob = c(.05, .07, .09, .11, .15, .25, .1, .09, .06, .03)
)
produce$peas <- list(cost = 3.17,
revenue = 3.76,
max_demand = 8,
sizes = c(0, .5, 1, 1.5, 2, 3),
prob = c(.1, .2, .2, .3, .1, .1)
)
produce$beans <- list(cost = 1.99,
revenue = 2.23,
max_demand = 14,
sizes = c(0, 1, 3, 4.5),
prob = c(.2, .4, .3, .1)
)
produce$barley <- list(cost = .95,
revenue = 1.65,
max_demand = 11,
sizes = c(0, .5, 1, 3.5),
prob = c(.2, .4, .3, .1)
)
for (i in names(produce)){
produce[[i]]["cumprob"] <- list(cumsum(produce[[i]]$prob))
}
library(data.table)
for (i in names(produce)){
x <- NULL
for (j in seq(1,90)){
x <- append(x, round(runif(1),4))}
produce[[i]]["observedprob"] <- list(x)
x <- NULL
for (t in seq(1,90)){
x <- append(x,(produce[[i]]$sizes[sum((produce[[i]]$cumprob - produce[[i]]$prob) <= produce[[i]]$observedprob[[t]])]))
}
produce[[i]]["lbs.sold"] <- list(x)
produce[[i]]["total.cost"] <- list(produce[[i]]$lbs.sold * produce[[i]]$cost)
produce[[i]]["total.rev"] <- list(produce[[i]]$lbs.sold * produce[[i]]$revenue)
}
for (i in names(produce)){
print(paste(i, "total cost = ", sum(produce[[i]]$total.cost)))
print(paste(i, "total revenue = ", sum(produce[[i]]$total.rev)))
print(paste(i, "profit = ", sum(produce[[i]]$total.rev - produce[[i]]$total.cost)))
}
[1] "oats total cost = 265.65"
[1] "oats total revenue = 326.37"
[1] "oats profit = 60.72"
[1] "peas total cost = 342.36"
[1] "peas total revenue = 406.08"
[1] "peas profit = 63.72"
[1] "beans total cost = 320.39"
[1] "beans total revenue = 359.03"
[1] "beans profit = 38.64"
[1] "barley total cost = 68.4"
[1] "barley total revenue = 118.8"
[1] "barley profit = 50.4"
LS0tDQp0aXRsZTogIkNoYXB0ZXIgNiBIb21ld29yayINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCmBgYHtyLCBpbmNsdWRlID0gRkFMU0V9DQpsaWJyYXJ5KHhsc3gpDQpsaWJyYXJ5KGZpdGRpc3RycGx1cykNCmxpYnJhcnkoTUFTUykNCmxpYnJhcnkodGlkeXZlcnNlKQ0KYGBgDQoNCktlbHRvbiBDaGFwdGVyIDYgcHJvYmxlbXMNCg0KMS4gVXNlIGZpbGUgZnJvbSB0ZXh0IHRvIGZpdCBvbmUgb3IgbW9yZSBwcm9iYWJpbGl0eSBkaXN0cmlidXRpb25zLCBpbmNsdWRpbmcgZ29vZG5lc3Mtb2YtZml0IHRlc3RpbmcgYW5kIHByb2JhYmlsaXR5IHBsb3RzLiBXaGF0J3MgdGhlIHJlY29tbWVuZGF0aW9uIGZvciBhIGRpc3RyaWJ1dGlvbiB0byBiZSB1c2VkIGluIHRoZSBzaW11bGF0aW9uIG1vZGVsIGZyb20gd2hpY2ggdG8gZ2VuZXJhdGUgdGhlc2UgaW50ZXItYXJyaXZhbCB0aW1lcz8gUHJvdmlkZSB0aGUgY29ycmVjdCBTaW1pbyBleHByZXNzaW9uLCBoZWFkaW5nIGFueSBwYXJhbWV0ZXJpemF0aW9uLWRpZmZlcmVuY2UgaXNzdWVzLg0KDQoNCmBgYHtyfQ0KbGlicmFyeSh4bHN4KQ0KcHJvYi4wNi4wMS5kZiA8LSByZWFkLnhsc3goIn4uL0dpdEh1Yi9NU0RBLS0tQ291cnNld29yay9EYXRhIDYwNC9XZWVrIDkgLSBIVy9Qcm9ibGVtX0RhdGFzZXRfMDZfMDEueGxzIiwgc2hlZXRJbmRleCA9IDEpDQpgYGANCg0KYGBge3J9DQpsaWJyYXJ5KGZpdGRpc3RycGx1cykNCnBsb3RkaXN0KHByb2IuMDYuMDEuZGYkWDI3Ljg4LCBoaXN0byA9IFRSVUUpDQpkZXNjZGlzdChwcm9iLjA2LjAxLmRmJFgyNy44OCwgYm9vdCA9IDEwMCkNCmBgYA0KDQo+IEJhc2VkIG9uIG91ciBDdWxsZW4gYW5kIEZyZXkgR3JhcGggdGhlIGV4cG9uZW50aWFsIGRpc3RyaWJ1dGlvbiBpcyBvdXIgYmVzdCBmaXQuIA0KDQpgYGB7ciwgd2FybmluZz1GQUxTRX0NCmRpcyA8LSBmaXRkaXN0KHByb2IuMDYuMDEuZGYkWDI3Ljg4LCBkaXN0ciA9ICJleHAiKQ0Kc3VtbWFyeShkaXMpDQpgYGANCg0KYGBge3J9DQpwbG90KGRpcykNCmBgYA0KDQo+IEluIFNpbWlvIGl0IHdvdWxkIGJlICJSYW5kb20uRXhwb25lbnRpYWwoMC4wODY3MjExKSINCg0KMi4gVXNlIGZpbGUgZnJvbSB0ZXh0IHRvIGZpdCBvbmUgb3IgbW9yZSBwcm9iYWJpbGl0eSBkaXN0cmlidXRpb25zLCBpbmNsdWRpbmcgZ29vZG5lc3Mtb2YtZml0IHRlc3RpbmcgYW5kIHByb2JhYmlsaXR5IHBsb3RzLiBXaGF0J3MgdGhlIHJlY29tbWVuZGF0aW9uIGZvciBhIGRpc3RyaWJ1dGlvbiB0byBiZSB1c2VkIGluIHRoZSBzaW11bGF0aW9uIG1vZGVsIGZyb20gd2hpY2ggdG8gZ2VuZXJhdGUgdGhlc2UgY2FsbC1kdXJhdGlvbiB0aW1lcz8gUHJvdmlkZSB0aGUgY29ycmVjdCBTaW1pbyBleHByZXNzaW9uLCBoZWFkaW5nIGFueSBwYXJhbWV0ZXJpemF0aW9uLWRpZmZlcmVuY2UgaXNzdWVzLg0KDQpgYGB7cn0NCmxpYnJhcnkoZml0ZGlzdHJwbHVzKQ0KcHJvYi4wNi4wMi5kZiA8LSByZWFkLnhsc3goIn4uL0dpdEh1Yi9NU0RBLS0tQ291cnNld29yay9EYXRhIDYwNC9XZWVrIDkgLSBIVy9Qcm9ibGVtX0RhdGFzZXRfMDZfMDIueGxzIiwgc2hlZXRJbmRleCA9IDEpDQpwbG90ZGlzdChwcm9iLjA2LjAyLmRmJFgzNi4xMywgaGlzdG8gPSBUUlVFKQ0KZGVzY2Rpc3QocHJvYi4wNi4wMi5kZiRYMzYuMTMsIGJvb3QgPSAxMDApDQpgYGANCg0KYGBge3IsIHdhcm5pbmc9RkFMU0V9DQpkaXMgPC0gZml0ZGlzdChwcm9iLjA2LjAyLmRmJFgzNi4xMywgICJnYW1tYSIpDQpkaXMNCmBgYA0KDQoNCmBgYHtyfQ0KcGxvdChkaXMpDQpgYGANCmBgYHtyfQ0KY29lZihkaXMpDQpgYGANCg0KDQo+IEluIFNpbWlvIGl0cyBSYW5kb20uR2FtbWEoIDQuODE3MzQzMSAsIDAuNDY1NzYyMSApDQoNCjMuIFVzZSBmaWxlIGZyb20gdGV4dCB0byBmaXQgb25lIG9yIG1vcmUgcHJvYmFiaWxpdHkgZGlzdHJpYnV0aW9ucywgaW5jbHVkaW5nIGdvb2RuZXNzLW9mLWZpdCB0ZXN0aW5nIGFuZCBwcm9iYWJpbGl0eSBwbG90cy4gV2hhdCdzIHRoZSByZWNvbW1lbmRhdGlvbiBmb3IgYSBkaXN0cmlidXRpb24gdG8gYmUgdXNlZCBpbiB0aGUgc2ltdWxhdGlvbiBtb2RlbCBmcm9tIHdoaWNoIHRvIGdlbmVyYXRlIHRoZSBudW1iZXIgb2YgZXh0cmEgdGVjaC1zdXBwb3J0IHBlb3BsZSBuZWVkIGZvciBhIGNhbGw/IFByb3ZpZGUgdGhlIGNvcnJlY3QgU2ltaW8gZXhwcmVzc2lvbiwgaGVhZGluZyBhbnkgY2hhcmFjdGVyaXphdGlvbi1kaWZmZXJlbmNlIGlzc3Vlcy4NCg0KYGBge3J9DQpwcm9iLjA2LjAzLmRmIDwtIHJlYWQueGxzeCgifi4vR2l0SHViL01TREEtLS1Db3Vyc2V3b3JrL0RhdGEgNjA0L1dlZWsgOSAtIEhXL1Byb2JsZW1fRGF0YXNldF8wNl8wMy54bHMiLCBzaGVldEluZGV4ID0gMSkNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkoZml0ZGlzdHJwbHVzKQ0KcGxvdGRpc3QocHJvYi4wNi4wMy5kZiRYMiwgaGlzdG8gPSBUUlVFKQ0KZGVzY2Rpc3QocHJvYi4wNi4wMy5kZiRYMiwgYm9vdCA9IDEwMCkNCmBgYA0KDQpgYGB7cn0NCmRpcyA8LSBmaXRkaXN0KHByb2IuMDYuMDMuZGYkWDIsIGRpc3RyID0gImxub3JtIikNCnN1bW1hcnkoZGlzKQ0KYGBgDQoNCg0KYGBge3J9DQpwbG90KGRpcykNCmBgYA0KDQpgYGB7cn0NCmNvZWYoZGlzKQ0KYGBgDQoNCj4gSW4gU2ltaW8gaXRzIFJhbmRvbS5Mb2dub3JtYWwoMC45NTQxODQ4LCAwLjU0MDg2NDMpDQoNCjQuIERlcml2ZSB0aGUgaW52ZXJzZS1DREYgZm9ybXVsYSBmb3IgZ2VuZXJhdGlvbiByYW5kb20gdmFyaWFudHMgZnJvbSBhIGNvbnRpbnVvdXMgdW5pZm9ybSBkaXN0cmlidXRpb24gYmV0d2VlbiByZWFsIG51bWJlcnMgYSBhbmQgYiAoYSA8IGIgKQ0KDQpDREYNCg0KJCRmKHgpID0gXGludF9hXntifSBcZnJhY3t4LWF9e2ItYX0gZHgkJA0KSW52ZXJzZQ0KDQokJGZeey0xfSh4KSA9IGEgKyAoYiAtIGEpIHgkJA0KDQo1LiBEZXJpdmUgdGhlIGludmVyc2UtQ0RGIGZvcm11bGEgZm9yIGdlbmVyYXRpb24gcmFuZG9tIHZhcmlhdGUgZnJvbSBhIFdlaWJ1bGwgZGlzdHJpYnV0aW9uLiBMb29rIHVwIGl0cyBkZWZpbml0aW9uIChpbmNsdWRpbmcgaXRzIENERikgaW4gb25lIG9mIHRoZSByZWZlcmVuY2VzLCBlaXRoZXIgYm9vayBvciBvbmxpbmUsIGNpdGVkIGluIHRoaXMgY2hhcHRlci4gQ2hlY2sgdGhlIHNpbWlvIGRlZmluaXRpb24gaW4gaXRzIGRvY3VtZW50YXRpb24gdG8gYmUgc3VyZSB5b3UgaGF2ZSB5b3VyIGZvcm11bGEgcGFyYW1ldGVyaXplZCBwcm9wZXIuIA0KDQokJGYoeCkgPSAxIC0gZV57MS0oMS9cYWxwaGEpeF5cYmV0YX0gJCQNCiQkZl57LTF9KHgpPSAoLVxhbHBoYSBsbigxLXUpKV57MS9cYmV0YX0kJA0KDQo4LiBQcm9ibGVtIGluIHRleHQ6DQoNCmBgYHtyfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpwcm9kdWNlIDwtIE5VTEwNCg0KcHJvZHVjZSRvYXRzIDwtICBsaXN0KGNvc3QgPSAxLjA1LCANCiAgICAgICAgICAgICAgICAgICAgICByZXZlbnVlID0gIDEuMjksDQogICAgICAgICAgICAgICAgICAgICAgbWF4X2RlbWFuZCA9IDEwLCANCiAgICAgICAgICAgICAgICAgICAgICBzaXplcyA9IGMoMCwgLjUgLCAxLCAxLjUsIDIsIDMsIDQsIDUsIDcuNSwgMTApLA0KICAgICAgICAgICAgICAgICAgICAgIHByb2IgPSBjKC4wNSwgLjA3LCAuMDksIC4xMSwgLjE1LCAuMjUsIC4xLCAuMDksIC4wNiwgLjAzKQ0KICAgICAgICAgICAgICAgICAgICAgICkNCg0KcHJvZHVjZSRwZWFzIDwtICBsaXN0KGNvc3QgPSAzLjE3LCANCiAgICAgICAgICAgICAgICAgICAgICByZXZlbnVlID0gIDMuNzYsDQogICAgICAgICAgICAgICAgICAgICAgbWF4X2RlbWFuZCA9IDgsIA0KICAgICAgICAgICAgICAgICAgICAgIHNpemVzID0gYygwLCAuNSwgMSwgMS41LCAyLCAzKSwNCiAgICAgICAgICAgICAgICAgICAgICBwcm9iID0gYyguMSwgLjIsIC4yLCAuMywgLjEsIC4xKQ0KICAgICAgICAgICAgICAgICAgICAgICkNCg0KcHJvZHVjZSRiZWFucyA8LSAgbGlzdChjb3N0ID0gMS45OSwgDQogICAgICAgICAgICAgICAgICAgICAgcmV2ZW51ZSA9ICAyLjIzLA0KICAgICAgICAgICAgICAgICAgICAgIG1heF9kZW1hbmQgPSAxNCwgDQogICAgICAgICAgICAgICAgICAgICAgc2l6ZXMgPSBjKDAsIDEsIDMsIDQuNSksDQogICAgICAgICAgICAgICAgICAgICAgcHJvYiA9IGMoLjIsIC40LCAuMywgLjEpDQogICAgICAgICAgICAgICAgICAgICAgKQ0KDQpwcm9kdWNlJGJhcmxleSA8LSBsaXN0KGNvc3QgPSAuOTUsIA0KICAgICAgICAgICAgICAgICAgICAgIHJldmVudWUgPSAgMS42NSwNCiAgICAgICAgICAgICAgICAgICAgICBtYXhfZGVtYW5kID0gMTEsIA0KICAgICAgICAgICAgICAgICAgICAgIHNpemVzID0gYygwLCAuNSwgMSwgMy41KSwNCiAgICAgICAgICAgICAgICAgICAgICBwcm9iID0gYyguMiwgLjQsIC4zLCAuMSkNCiAgICAgICAgICAgICAgICAgICAgICApDQoNCmZvciAoaSBpbiBuYW1lcyhwcm9kdWNlKSl7DQogIHByb2R1Y2VbW2ldXVsiY3VtcHJvYiJdIDwtIGxpc3QoY3Vtc3VtKHByb2R1Y2VbW2ldXSRwcm9iKSkNCn0NCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkoZGF0YS50YWJsZSkNCg0KZm9yIChpIGluIG5hbWVzKHByb2R1Y2UpKXsNCiAgeCA8LSBOVUxMDQogIGZvciAoaiBpbiBzZXEoMSw5MCkpew0KICB4IDwtIGFwcGVuZCh4LCByb3VuZChydW5pZigxKSw0KSl9DQogIHByb2R1Y2VbW2ldXVsib2JzZXJ2ZWRwcm9iIl0gPC0gbGlzdCh4KQ0KICB4IDwtIE5VTEwNCiAgZm9yICh0IGluIHNlcSgxLDkwKSl7DQogIHggPC0gYXBwZW5kKHgsKHByb2R1Y2VbW2ldXSRzaXplc1tzdW0oKHByb2R1Y2VbW2ldXSRjdW1wcm9iIC0gcHJvZHVjZVtbaV1dJHByb2IpIDw9IHByb2R1Y2VbW2ldXSRvYnNlcnZlZHByb2JbW3RdXSldKSkNCiAgfQ0KICBwcm9kdWNlW1tpXV1bImxicy5zb2xkIl0gICA8LSBsaXN0KHgpDQogIHByb2R1Y2VbW2ldXVsidG90YWwuY29zdCJdIDwtIGxpc3QocHJvZHVjZVtbaV1dJGxicy5zb2xkICogcHJvZHVjZVtbaV1dJGNvc3QpDQogIHByb2R1Y2VbW2ldXVsidG90YWwucmV2Il0gIDwtIGxpc3QocHJvZHVjZVtbaV1dJGxicy5zb2xkICogcHJvZHVjZVtbaV1dJHJldmVudWUpDQp9DQoNCmZvciAoaSBpbiBuYW1lcyhwcm9kdWNlKSl7DQpwcmludChwYXN0ZShpLCAidG90YWwgY29zdCA9ICIsIHN1bShwcm9kdWNlW1tpXV0kdG90YWwuY29zdCkpKQ0KcHJpbnQocGFzdGUoaSwgInRvdGFsIHJldmVudWUgPSAiLCBzdW0ocHJvZHVjZVtbaV1dJHRvdGFsLnJldikpKQ0KcHJpbnQocGFzdGUoaSwgInByb2ZpdCA9ICIsIHN1bShwcm9kdWNlW1tpXV0kdG90YWwucmV2IC0gcHJvZHVjZVtbaV1dJHRvdGFsLmNvc3QpKSkNCiAgDQp9DQpgYGA=