123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #!/usr/bin/env nix-shell
- #!nix-shell -i python3 -p python3 python3Packages.pandas python3Packages.numpy python3Packages.scipy python3Packages.pyarrow
- # coding: utf-8
- from scipy.integrate import quad
- import pandas as pd
- import numpy as np
- from pathlib import Path
- def normalProbabilityDensity(x):
- constant = 1.0 / np.sqrt(2*np.pi)
- return (constant * np.exp((-x**2) / 2.0))
- home = Path.home()
- snt_path = Path(home, ".standard-normal.csv")
- if snt_path.exists():
- snt = pd.read_csv(snt_path, index_col=0)
- else:
- snt = pd.DataFrame(data = [],
- index = np.round(np.arange(0, 3.5, 0.1), 2),
- columns = np.round(np.arange(0.00, 0.1, 0.01), 2))
- for index in snt.index:
- for column in snt.columns:
- z = np.round(index + column, 2)
- value, _ = quad(normalProbabilityDensity, np.NINF, z)
- value = np.round(value - 0.5, 4)
- snt.loc[index,column] = value
- snt.to_csv(snt_path)
- def find_z(p):
- posns = []
- res = snt.isin([p])
- srs = res.any()
- cols = list(srs[srs == True].index)
- for col in cols:
- rows = list(res[col][res[col] == True].index)
- for row in rows:
- posns.append(float(col) + row)
- return np.max(posns)
- mean = float(input("Sample Mean: "))
- std = float(input("Standard Deviation: "))
- N = int(input("Sample Size: "))
- alpha = float(input("Alpha [0, 1): "))
- alpha_2 = alpha / 2
- Z_alpha_2 = find_z(alpha_2)
- plus_minus = np.round(Z_alpha_2 * (std / np.sqrt(N)), 4)
- print(f"{mean} +/- {plus_minus}")
- print(f"[{mean - plus_minus}, {mean + plus_minus}]")
- ### Local Variables:
- ### mode: python
- ### End:
|