In [1]:
from sympy import *; init_session()
In [2]:
import random as rand
import numpy as np
In [3]:
from applpy import *
In [4]:
# Example 1
In [5]:
rand.seed(3)
results = []
for i in range(5):
nrep = 4000000
count = 0
for i in range(nrep):
x = sum([rand.random() for j in range(8)])
if x > 3 and x < 6:
count += 1
results.append(count/nrep)
print(results)
In [6]:
n = 8
X = UniformRV(Rational(0),Rational(1))
Y = ConvolutionIID(X,n)
In [7]:
CDF(Y,6) - CDF(Y,3)
Out[7]:
In [8]:
# Example 2
In [9]:
X = TriangularRV(1,2,4)
Y = TriangularRV(1,2,3)
V = X*Y
V.simplify()
In [10]:
PlotDist(V)
plt.xlabel('v')
plt.ylabel('f(v)')
Out[10]:
In [12]:
print V.latex()
In [13]:
# Example 3
In [14]:
X = ExponentialRV(Rational(1,2))
Y = ExponentialRV(Rational(1,3))
Z = X+Y
Z.display()
In [15]:
# Example 4
In [16]:
x = Symbol('x',positive=True)
X = RV([x,2*x],[0,1,oo],['continuous','hf'])
simplify(Mean(X))
Out[16]:
In [17]:
X.display()
In [18]:
# Example 5
In [22]:
x = Symbol('x')
X = RV([x/21],[1,6],['Discrete','pdf'])
Y = ConvolutionIID(X,5)
In [23]:
[Mean(Y),Variance(Y),Skewness(Y),Kurtosis(Y)]
Out[23]:
In [ ]:
In [24]:
# Example 3.1
In [72]:
theta = Symbol('theta',positive=True)
X = ExponentialRV(theta)
Y = ExponentialRV(Rational(1,100))
data = [97, 51, 11, 4, 14, 18, 142, 68, 77, 80, 1, 16, 106, 206,
82, 54, 31, 216, 46, 111, 39, 63, 18, 191, 18, 163, 24]
#P = Posterior(X,Y,data,theta)
In [ ]:
P
In [26]:
CredibleSet(P,0.10)
Out[26]:
In [27]:
Mean(P)
Out[27]:
In [28]:
Mean(P).evalf()
Out[28]:
In [34]:
X = BinomialRV(12,theta)
Y = TriangularRV(Rational(0),Rational(1,2),Rational(1))
data = [5,6,3,2,5]
P = Posterior(X,Y,data,theta)
In [35]:
P.display()
In [36]:
# Example 3.2
In [59]:
rand.seed(3)
treatment = [16,23,38,94,99,141,197]
n = len(treatment)
B = 50
x = []
for i in range(B):
samp = [rand.sample(treatment,1)[0] for i in range(n)]
med = np.median(samp)
x.append(med)
np.std(x)
Out[59]:
In [60]:
treatment = [16,23,38,94,99,141,197]
X = BootstrapRV(treatment)
Y = OrderStat(X,7,4)
sqrt(Variance(Y)),sqrt(Variance(Y)).evalf()
Out[60]:
In [61]:
# Example 3.3
In [4]:
X = MarkovChain(P = [ [Rational(45,100), Rational(48,100),Rational(7,100)],
[Rational(5,100),Rational(70,100),Rational(25,100)],
[Rational(1,100),Rational(50,100),Rational(49,100)]],
init = [Rational(5,100),Rational(80,100),Rational(15,100)],
states = ['stormy','cloudy','sunny'])
In [5]:
X.display()
In [6]:
X.display(option='steady state',method ='rational')
In [13]:
X.probability([(3,'stormy')],given=[(1,'cloudy')],method='rational')
Out[13]:
In [8]:
X.probability([(5,'cloudy')],method='rational')
Out[8]:
In [1]:
# Example 3.4
In [44]:
Y = UniformRV(0,1/2)
In [45]:
A = 1 - exp(-2*y)
B = exp(-2*y) - 1/2
C = Rational(1,2) - exp(-2* (1-y))
In [46]:
ys = solve(B-C,y)[0].evalf()
yss = solve(A-C,y)[3].evalf()
In [47]:
g = [[A,B,C],[0,ys,yss,0.5]]
In [ ]:
In [29]:
# Example 3.5
In [73]:
x=Symbol('x')
X1 = BinomialRV(23, Rational(21,23))
X1 = Transform(X1,[[x/23],[0,23]])
X2 = BinomialRV(28,Rational(27,28))
X2 = Transform(X2,[[x/28],[0,28]])
X3 = BinomialRV(84,Rational(82,84))
X3 = Transform(X3,[[x/84],[0,84]])
In [74]:
T = X1*X2*X3
In [75]:
IDF(T,0.05)
Out[75]:
In [47]:
# Example 3.6
In [76]:
theta = Symbol('theta',positive=True)
mu = Symbol('mu',positive=True)
X = ExponentialRV(theta)
Y = ExponentialRV(mu)
In [77]:
T = Queue(X,Y,4,0,1)
In [78]:
T.simplify()
In [79]:
Mean(T)
Out[79]:
In [80]:
Variance(T)
Out[80]:
In [81]:
# Example 3.8
In [82]:
Mean(ChiRV(3))/sqrt(3)
Out[82]:
In [83]:
Mean(ChiRV(99))/sqrt(99)
Out[83]:
In [60]:
# Example 3.9
In [71]:
U1 = UniformRV(0,Rational(1))
U2 = UniformRV(0,Rational(1))
V1 = U1 - U2
V1.simplify()
In [72]:
g1 = [[x*x,x*x],[-oo,0,oo]]
V2 = Transform(V1,g1)
In [73]:
V2.display()
In [104]:
#V3 = V2+V2
In [70]:
V3.display()
In [73]:
g2 = [[sqrt(x)],[0,2]]
V4 = Transform(V3,g2)
In [75]:
V4.simplify()
In [78]:
# Example 3.13
In [84]:
X = WeibullRV(2,2)
In [60]:
alist = X.variate(n=10)
blist = X.variate(n=12)
clist = X.variate(n=17)
In [4]:
alist = [0.2135,0.3153,0.3841,0.3946,0.4707,0.5107,0.5783,0.5960,0.6404,0.7601]
blist = [0.0482,0.0945,0.1149,0.2441,0.287,0.311,0.3362,0.3924,0.4166,0.4194,0.6217,0.698]
clist = [0.0474,0.2732,0.2828,0.2952,0.337,0.3627,0.3698,0.4348,0.4968,0.5061,0.5093,
0.5211,0.5266,0.6654,0.6951,0.6975,0.7694]
In [5]:
alist = [0.2135, 0.3153, 0.3841, 0.3946, 0.4707, 0.5107, 0.5783, 0.5960,
0.6404,0.7601]
blist = [0.0482, 0.0945, 0.1149, 0.2441, 0.287, 0.311, 0.3362, 0.3924,
0.4166, 0.4194, 0.6217, 0.698]
clist = [0.0474, 0.2732, 0.2828, 0.2952, 0.337, 0.3627, 0.3698, 0.4348,
0.4968, 0.5061, 0.5093, 0.5211, 0.5266, 0.6654, 0.6951, 0.6975,
0.7694]
In [6]:
A = BootstrapRV(alist)
B = BootstrapRV(blist)
C = BootstrapRV(clist)
In [7]:
Sstar = Minimum( MaximumIID(A,2),
Minimum(MaximumIID(B,2),
MaximumIID(C,2)))
Sstar1 = Minimum(MaximumIID(A,3),
MaximumIID(B,3),
MaximumIID(C,3))
S = Minimum(MaximumIID(A,2),
MaximumIID(B,2),
MaximumIID(C,2))
In [8]:
Mean(Sstar),Mean(Sstar1), Mean(S)
Out[8]:
In [ ]:
n = 2
target = 1.05
m = Mean(Sstar1)
mux = m
while (mux < target * m):
n+=1
System = Minimum(MaximumIID(A,n),
MaximumIID(B,3),
MaximumIID(C,3))
mux = Mean(System)
print n,mux
print n
In [ ]: