text: # ExponentialDistribution
  #!/usr/bin/env python
  
  # 指数分布見方
  # 右肩下がりの分布
  # ある事象が起きてから次にその事象が起きるまでの間隔を表す
  # xが0の時最大
  
  # 期待値:E(x) = 1 / λ
  # 分散: Var(x) = 1 / λ **2
  # 確率密度関数: f(t) = λe ** -t
  # * 確率変数Xがパラメターλの指数分布に従うとき X ~ Exp(λ)と表現する
  # 参考
  from scipy.stats import norm
  
  
  # 生存関数
  # 確率変数XXがある値xx以上となる確率
  def ProbabilityTop(x):
      return norm.sf(x=x)
  
  
  # 累積分布関数
  # 確率変数XXがある値xx以下となる確率
  def ProbabilityBottom(x):
      return norm.cdf(x=x)
  
  
  # 累積確率から横軸の値を出す
  # 累積分布関数cdfの逆関数
  def CumulativeProbability(persent):
      return norm.ppf(q=persent)
  
  
  # パーセント点関数
  # ある点が何％点かを求める
  def PersentPoint(persent, μ, σ):
      # norm.ppf(q=パーセント, loc=平均, scale=標準偏差)
      return norm.ppf(q=persent, loc=μ, scale=σ)
  
  
  def main():
      ## 生存関数
      ## 確率変数XXがある値xx以上となる確率
      # Q(0.86)
      # A : 0.195
      probability = ProbabilityTop(0.86)
      print("生存関数 確率", probability)
  
      ## 累積分布関数
      ## 確率変数XXがある値xx以下となる確率
      # Q(0.86)
      # A : 0.805
      probability = ProbabilityBottom(0.86)
      print("累積分布関数 確率", probability)
  
      ## 確率から累積確率
      # Q(z) = 0.195
      # A: z = 0.86
      z = CumulativeProbability(0.195)
      print("Zの値", z)
  
      # Z = x - μ / σ (標準化 Z~N(0,1))
      # 0.14 = x - 0 / 1
      persentPoint = PersentPoint(0.05, 0, 1)
      print("ある点の何％点", persentPoint)
  
  
  if __name__ == "__main__":
      main()
  