美文网首页解密大数据
作业-数据分析机票超卖

作业-数据分析机票超卖

作者: pnjoe | 来源:发表于2017-08-03 01:40 被阅读207次

基本作业

机票超卖现象
假设某国际航班有300个座位,乘客平均误机率是2%。

  • 1、如果一共卖出305张机票,那么登机时人数超额的概率是多少?
  • 2、如果一共卖出305张机票,登机时最多只超额1人的概率是多少?
  • 3、一共卖几张票,可以保证不超额的概率至少是90%。

小提示:属于二项分布

导入模块

import numpy as np
import matplotlib.pyplot as plt
import scipy.stats

%config InlineBackend.figure_format = 'retina'

1、如果一共卖出305张机票,那么登机时人数超额的概率是多少?

# 先画张二项分布图方便理解题意.

binomial = scipy.stats.binom(305,1-0.02)
x = np.arange(280,310,1)
y = binomial.pmf(x)

plt.figure(figsize=(6,6))
plt.plot(x,y,'bo')
plt.ylim(-0.01,0.18)
plt.vlines(x,0,y,'b')

for a in np.arange(301,306,1):
    plt.vlines(a,0,binomial.pmf(a),'r')
    plt.plot(a,binomial.pmf(a),'ro')
plt.show()

分析一下: 登机时超额的情况,就是实际登机人数(301~305)大于座位数(300).
登机时人数超额的概率就是图表上5条红线的概率总和.

# 有两种解法.
# 方法一: 事件总概率1 - 不超额概率
1 - binomial.cdf(300)

# 运行结果
0.26915013819815137
# 方法二: 直接用sf函数来求
binomial.sf(300)

0.26915013819815131

2、如果一共卖出305张机票,登机时最多只超额1人的概率是多少?

我不仅英文不好,中文也不好.这题目可以理解出两个意思.

  • 理解一:最多情况只超额1人,那么最少情况就是只有1人登机.那么就是求(1~301人)各种概率总和.解法如下:
# 同样.先画图

binomial = scipy.stats.binom(305,1-0.02)
x = np.arange(1,310,1)
y = binomial.pmf(x)

plt.figure(figsize=(20,6))
plt.plot(x,y,'b.')
plt.ylim(-0.01,0.18)
plt.vlines(x,0,y,'b')

for a in np.arange(1,301+1,1):
    plt.vlines(a,0,binomial.pmf(a),'r')
    plt.plot(a,binomial.pmf(a),'r.')
plt.show()

求的是(左边)红色情况概率总和

binomial.cdf(300+1)

# 运行结果
0.86014450106633422
  • 理解二:登机超额情况下.登机时最多只超额1人的概率.
    那么可以换种说法.即恰好登机时是301人的概率是多少,解法如下:
binomial.pmf(301)

# 运行结果
0.12929463926438506

3、一共卖几张票,可以保证不超额的概率至少是90%。

这题我也理解成两种意思了:

  • 第一种:本次航班,航空公司印制多少张机票.全部卖出.可以保证不超额的概率≥90%

    老实讲.这样理解题意的话,用正规算术方法,我不会算.我采用的是最土最笨的方法.
    就是一个一个试.从301票~310票, 逐种情况去算不超额的概率,再与90%去对比.
    人工算的话.会累死.好在电脑有循环语句,计算速度快.勉强可以应付一下.

piao=300
while (piao<310):
    binomial_jp = scipy.stats.binom(piao, 0.98)
    
    if binomial_jp.cdf(300) < 0.9:
        print ('卖出的机票只要不超过',piao-1,'张时,就可以保证不超额的概率至少是90%')
        break
    
    piao += 1

# 运行结果
卖出的机票只要不超过 303 张时,就可以保证不超额的概率至少是90%

验证一下:

# 当303张票时,求不超额的概率
scipy.stats.binom(303,0.98).cdf(300)

# 运行结果
0.94239552568203511
# 当304张票时,不超额的概率又是多少
scipy.stats.binom(304,0.98).cdf(300)

# 运行结果
0.85844883366605595

所以,机场印制303张票时,就算全部售出.94%(>90%)情况下不会超卖.合理一些.

  • 第二种:是不是已知概率≤90%,反求机票数就可以了?

那只需要用ppf()函数计算一下就可以了.

binomial.ppf(0.9)

# 运行结果
302.0

302张票.

相关文章

网友评论

    本文标题:作业-数据分析机票超卖

    本文链接:https://www.haomeiwen.com/subject/tpjulxtx.html