Skip to content

Instantly share code, notes, and snippets.

@AllanChain
Created December 7, 2020 02:02
Show Gist options
  • Save AllanChain/3de9ba2cc4e8247ae2a817a02185453c to your computer and use it in GitHub Desktop.
Save AllanChain/3de9ba2cc4e8247ae2a817a02185453c to your computer and use it in GitHub Desktop.
My ipython profile for experiment reports
import numpy as np
from numpy import sqrt
import pandas as pd
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = (10, 8)
plt.rcParams["font.size"] = 14
def read_excel(sheet):
return pd.read_excel("data.xlsx", sheet_name=sheet, engine="openpyxl")
def float_formatters(digits):
return [
("{:.%df}" % digit).format if digit != -1 else lambda x: x for digit in digits
]
def least_square(X, Y, stdY) -> None:
X_ = np.vstack([X, np.ones(len(X))]).T
(k, b), resid = np.linalg.lstsq(X_, Y, rcond=None)[:2]
r = 1 - resid[0] / (Y.size * Y.var())
print("Y = k * X + b")
print(f"{k=}")
print(f"{b=}")
print(f"{r=}")
sigma_kA = k * np.sqrt((1 / r ** 2 - 1) / (len(X) - 2))
print(f"{sigma_kA=}")
Xbar = X.mean()
fm = np.sum((X - Xbar) ** 2)
sigma_kB = np.sqrt(np.sum((np.multiply(X - Xbar, stdY) / fm) ** 2))
print(f"{sigma_kB=}")
sigma_k = np.sqrt(sigma_kA ** 2 + sigma_kB ** 2)
print(f"{sigma_k=}")
sigma_b = np.sqrt(np.sum(((1 / len(X) - Xbar * (X - Xbar) / fm) * stdY) ** 2))
print(f"{sigma_b=}")
return (k, b, r, sigma_k, sigma_b)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment