Python 3 で数学を。

Python 3 とライブラリで数学の問題を解いていきます。統計学や機械学習はときどき。

統計学

確率。確率分布。期待値。サイコロ。(Python 3, SymPy: sympy.stats, Die(), density(), dict, E())

使用するライブラリ SymPy Python 3 コード dice1.py #!/usr/bin/env python3 """(docstring) """ from sympy.stats import Die, density, E def print_math_problems(): """(docstring) """ print("""問題: (1) (六面体の) サイコロの確率分布を求めよ。 (2…

加重平均 (重み付き平均)。自作関数。(Python 3: math, fsum(), NumPy)

使用するライブラリ 標準ライブラリの math Python 3 コード weighted_mean.py #!/usr/bin/env python3 """(docstring) """ from math import fsum def weighted_mean(w, n): """(docstring) """ # 加重平均 (重み付き平均)の数式: Σwx / Σw # 小数を扱うと…

対応のない (対になっていない) 2標本t検定 (両側)。ウェルチのt検定 (Python 3, Pandas, SciPy: scipy, ttest_ind(, equal_var=False))

使用するライブラリ Pandas SciPy Python 3 コード t_test_ind2.py #!/usr/bin/env python3 """(docstring) """ # 使用したデータは『すぐできる生物統計』 # # 概要: # 対応のない (対になっていない) 2 標本 t 検定 (両側) # 16 匹のオス象と 16 匹のメス…

Seabornによる回帰直線 (Python 3, Seaborn: set(), lmplot(), regplot(), matplotlib, Pandas)

使用するライブラリ Seaborn をメインに使用。 matplotlib Pandas Python 3 コード seaborn_lm_reg_plot1.py #!/usr/bin/env python3 """(docstring) """ # 使用したデータは『マンガでわかる統計学 [回帰分析編]』第 2 章 import matplotlib.pyplot as plt …

ノンパラメトリック検定。二項検定。1つの割合に関する検定。基準値との比較 (Python 3, SciPy: binom_test())

使用するライブラリ SciPy Python 3 コード binomial_test1.py #!/usr/bin/env python3 """(docstring) """ # 使用するデータと解説は『SPSSによるノンパラメトリック検定』p 24 ~ 34 # # # データや検定(分析、解析等)について: # # ある病院で、看護に関す…

決定係数 R^2, r^2 (自作関数) (Python 3, NumPy)

使用するライブラリ NumPy Python 3 コード coefficient_of_determination.py #!/usr/bin/env python3 """(docstring) """ import numpy as np def coefficient_of_determination(x, y): """(docstring) """ # 決定係数は、 # 相関係数の数式: r = Σ(xi - xb…

最小二乗法。傾きb, y切片a。回帰方程式。回帰直線 (自作関数) (Python 3, NumPy)

使用するライブラリ Numppy Python 3 コード method_of_least_squares.py #!/usr/bin/env python3 """(docstring) """ import numpy as np def method_of_least_squares(x, y): """(docstring) """ # 最小二乗法の数式: # y = bx + a (当記事で参考にした、…

偏相関係数 (自作関数) (Python 3, NumPy)

使用するライブラリ NumPy Python 3 コード partial_correlation_coefficient.py #!/usr/bin/env python3 """(docstring) """ import numpy as np def partial_correlation_coefficient(x, y, z): """(docstring) """ # 偏相関係数の数式: r12 - r13r23 / √1…

対応のある (対の) 2標本t検定 (両側) (Python 3, Pandas: describe(), mean(), sem(), SciPy: stats, ttest_rel(), mean(), sem())

以前、自分の他ブログで書いたものを加筆・修正して再掲。 使用するライブラリ Pandas SciPy Python 3 コード t_test_two_related1.py #!/usr/bin/env python3 """(docstring) """ # 使用したデータは『すぐできる生物統計』 # # 対応のある (対の) 2 標本 t…

カーネル密度推定、ヒストグラム、平滑化。(Python 3, Seaborn: distplot(), set())

使用するライブラリ Seaborn がメイン matplotlib NumPy Python 3 コード kernel_density_estimation.py #!/usr/bin/env python3 """(docstring) """ import matplotlib.pyplot as plt import numpy as np import seaborn as sns def kernel_density_estimat…

共分散と不偏共分散 (自作関数) (Python 3, Numpy: cov(), cov(, ddof=0), cov(, ddof=1))

使用するライブラリ NumPy Python 3 コード covariance.py #!/usr/bin/env python3 """(docstring) """ import numpy as np def covariance(x, y, my_ddof=0): """(docstring) """ # 共分散の数式: Σ(xi - xbar)(yi - ybar)/n # 不偏共分散: Σ(xi - xbar)(yi…

標準得点、標準化、正規化、基準化、z値、Z値 (自作関数) (Python 3, NumPy, SciPy: zscore())

使用するライブラリ NumPy Python 3 コード standard_score.py #!/usr/bin/env python3 """(docstring) """ import numpy as np def standard_score(x): """(docstring) """ # 標準得点、標準化、正規化、基準化、z値、Z値の数式: z = (xi - xbar) / S mean_…

変動係数 (不偏標準偏差ではない場合) (自作関数) (Python 3, NumPy, SciPy: variation())

使用するライブラリ NumPy Python 3 コード coefficient_of_variation.py #!/usr/bin/env python3 """(docstring) """ import numpy as np def coefficient_of_variation(x): """(docstring) """ # 変動係数の数式: C.V. = Sx / xbar # # 注意: ここでの変動…

相関係数 (自作) (Python 3, NumPy: corrcoef(), SciPy: stats, pearsonr())

使用するライブラリ NumPy Python 3 コード correlation_coefficient.py #!/usr/bin/env python3 """(docstring) """ import numpy as np def correlation_coefficient(x, y): """(docstring) """ # 相関係数の数式: Σ(xi - xbar)(yi - ybar) / √Σ(xi - xbar…

一元配置分散分析 (ANOVA) (Python 3, SciPy: stats, f_oneway(), Pandas: DataFrame())

以前、自分が書いていたブログから加筆・修正してこちらで再掲。 (現在、そのブログは、自分自身のためのノート化が強くなったので非公開)。 使用するライブラリ Pandas SciPy Python 3 コード oneway_anovatests1.py #!/usr/bin/env python3 """(docstring)…

差に対するカイ二乗検定 (Python 3, SciPy: stats, chisquare(), Pandas: DataFrame())

以前、自分が書いていたブログから加筆・修正してこちらで公開。 (そのブログは、自分自身のためのノート化が強くなったので現在非公開)。 使用するライブラリ SciPy Pandas Python 3 コード chi_squaredtest1.py #!/usr/bin/env python3 """(docstring) """…

単回帰分析 (線形回帰、要約統計量、散布図、相関係数、p値、回帰直線) (Python 3, StatsModels: statsmodels.formula.api, ols())

以前、自分が書いていたブログから加筆・修正してこちらで公開。 (以前のブログは、自分自身のためのノート化が強くなったので現在非公開モードにしている)。 使用するライブラリ matplotlib Pandas SciPy StatsModels Python 3 コード linear_regression1.p…

調和平均 (平均) (Python 3, NumPy: sum(), SciPy: stats, hmean())

使用するライブラリ NumPy Python 3 コード harmonic_mean.py #!/usr/bin/env python3 """(docstring) """ import numpy as np def harmonic_mean(dat): """(docstring) """ # 調和平均の数式: (1/n)((1/x1) + ... + (1/xn)) # # 注意: この方法は、実用に耐…

幾何平均 (平均) (Python 3, NumPy: prod(), SciPy: stats, gmean())

使用するライブラリ NumPy Python 3 コード geometric_mean.py #!/usr/bin/env python3 """(docstring) """ import numpy as np def geometric_mean(dat): """(docstring) """ # 幾何平均の数式: n√(x1 * x2 * ... * xn) # # 注意: この方法は、実用に耐えな…

平均 (算術平均)。(Python 3, NumPy: sum())

使用するライブラリ NumPy Python 3 コード arithmetic_mean.py #!/usr/bin/env python3 """(docstring) """ import numpy as np def arithmetic_mean(dat): """(docstring) """ # 算術平均の数式: xbar = (x1 + x2 + ... + xn) / n return np.sum(dat) / le…

統計学。2標本t検定 (分散が等しいと仮定。等分散を仮定)。(Python 3, SciPy: stats, ttest_ind())

使用するライブラリ NumPy SciPy Python 3 コード t_test_ind.py #!/usr/bin/env python3 """(docstring) """ import numpy as np from scipy import stats def t_test_ind(x_dat, y_dat): """(docstring) """ # x_dat, y_dat: 独立になっている 2 つのグル…

統計学。1標本t検定 (両側)。(Python 3, SciPy: stats, ttest_1samp())

使用するライブラリ NumPy SymPy Python 3 コード t_test_one_samp.py #!/usr/bin/env python3 """(docstring) """ import numpy as np from scipy import stats def t_test_one_samp(dat, mu): """(docstring) """ # dat: データ, mu: 母平均 return stats.…

確率 (統計学)。大数の法則 (Python 3, NumPy: random, randint(), arange(), mean())

使用するライブラリ NumPy Python 3 コード law_of_large_numbers.py #!/usr/bin/env python3 """(docstring) """ import numpy as np def law_of_large_numbers(): """(docstring) """ print('サイコロの出目の期待値:') EX = sum([i*(1/6) for i in range(…

(統計学、(高校数学: データの分析)) メジアン (中央値)、 モード (最頻値) (Python 3, NumPy: median(), SciPy: stats, mode())

使用するライブラリ NumPy SciPy Python 3 コード median_mode.py #!/usr/bin/env python3 """(docstring) """ import numpy as np from scipy import stats def median_mode(): """(docstring) """ # 仮想データ x を作成。 # # (こういう作り方だと、最頻…

最小二乗法 (統計学) (Python 3, scikit-learn: linear_model, LinearRegression(), fit(), predict())

使用するライブラリ matplotlib NumPy scikit-learn Python 3 コード least_squares_method.py #!/usr/bin/env python3 """(docstring) """ # 注意事項 # scikit-learn における機械学習の普通のやり方ではないので注意してください。 # 古典的・旧来的な統…

確率。サイコロの期待値。(統計学) (Python 3: リスト内包表記, sum(), doctest, testmod())

使用するライブラリ 標準ライブラリの doctest Python 3 コード ex.py #!/usr/bin/env python3 """(docstring) """ def ex(): """ >>> EX = sum([i*(1/6) for i in range(1, 7)]) >>> EX 3.5 """ # サイコロ EX = sum([i*(1/6) for i in range(1, 7)]) print…

(統計学, (高校数学: データの分析)) 散布図と相関係数とp値 (Python 3, matplotlib: scatter(), Scipy: stats, pearsonr())

使用するライブラリ matplotlib Pandas SciPy Python 3 コード scatter_plot_and_cor.py #!/usr/bin/env python3 """(docstring) """ import matplotlib.pyplot as plt import pandas as pd from scipy.stats import pearsonr def scatter_plot_and_cor(): "…

(統計学, (高校数学: データの分析)) 平均値、分散、標準偏差 (Python 3, NumPy: mean(), var(), std(), Pandas: DataFrame())

使用するライブラリ NumPy Pandas Python 3 コード mean_var_std.py #!/usr/bin/env python3 """(docstring) """ import numpy as np import pandas as pd def mean_var_std(): """(docstring) """ dat = {'生徒id': list(range(1, 11)), '数学のテストの結…

(統計学, (高校数学: データの分析)) (標本, 母, 不偏) 標準偏差 (N - 0, N - 1) (Python 3 (自作関数), NumPy: std(, ddof=1), sum(), mean(), sqrt())

使用するライブラリ NumPy Python 3 コード my_std.py #!/usr/bin/env python3 """(docstring) """ import numpy as np def my_std(dat, my_ddof=0): """(docstring) """ my_var = np.sum((dat - np.mean(dat))**2) / (len(dat) - my_ddof) return np.sqrt(m…

(統計学, (高校数学: データの分析)) 分散と不偏分散 (Python 3 (自作関数), NumPy: var(, ddof=1), sum(), mean())

使用するライブラリ NumPy Python 3 コード var_unbiased_var.py #!/usr/bin/env python3 """(docstring) """ import numpy as np # 分散 def my_var(dat): """(docstring) """ return np.sum((dat - np.mean(dat))**2) / len(dat) # 不偏分散 def my_unbias…