python

【python】summary()の出力時に予測区間の範囲と数を変更する【Cmdstanpy】

Cmdstanpyでベイズ推定を実行した後に、summary()を実行すると各種パラメーターのまとめが出てくるが、その中に予測区間がある。 デフォルトは5%,50%,95%だが、この予測区間の範囲を変更したくなった。 fit.summary() percentilesで指定するといいらしく、範…

【python】Stanの重回帰分析をやってみる【Cmdstanpy】

前回cmdstanpyを使って単回帰を解説したので、今回は重回帰分析用のコードをまとめてみる。 使用するデータ x1(説明変数) 1 2 3 4 5 x2(説明変数) 2 6 6 9 6 x3(目的変数) 1 3 4 7 9 過去の計算によると下記式が得られていた。 pythonコード 使用したpython…

【cmdstanpy】Stanのフィッティング後のモデルを保存する【chatGPTメモ】

cmdstanpyで事後分布を計算した後保存したいなと思ったら、そのままcsvに行けるらしい。今度試してみる。 import cmdstanpy import pandas as pd # Stanモデルのコンパイル model = cmdstanpy.CmdStanModel(stan_file='model.stan') # データの準備 data = {…

【python】Stanの単回帰分析をとにかく丁寧に解説する【Cmdstanpy】

今はやりのベイズ推定。pythonだとpyMC3やCmdstanpyがライブラリとして準備されている。ただ、Stanの書き方はベクトルや行列になじみがないと結構難しい。 毎回調べながら書いているのだが、一度ちゃんと調べてまとめておきたい。 使用するデータ 色んな記事…

【matplotlib.collections.LineCollection】グラフの線の色をグラデーションにしたい【python】

matplotlibでplotの線にグラデーションで色を付けたくなった。 scatterで点にしてプロットする方法はあったのだけど、点ではなく線でちゃんとプロットしたいと思った。 LineCollectionで線をプロットするとよいという事が分かったので、こちらを解説する。 …

【matplotlib.animation】scatterをアニメーションにしようとして困った話【python】

前回の記事でグラフをアニメーションにするArtistAnimationについて解説した。 chemstat.hatenablog.com 前回の記事でこんな感じのコードでグラフのアニメーションを作成した。 import numpy as np import matplotlib.pyplot as plt import matplotlib.anima…

【matplotlib.animation】グラフをアニメーションにする【python】

グラフを作るときは、アニメーションにした方が圧倒的に分かりやすくて良い。 そんなわけで今回はpythonで動くグラフを作る。 ImageMagickのインストール まずはImageMagickというgifアニメーションを作れるソフトをインストールして、pythonで呼び出せるよ…

【python】縦方向に連結されたcsvファイルを分割したい

完全に自分用のメモ書き。 最近使っている測定機器から、複数のデータをまとめてエクスポートすると、一つのファイルに縦方向に連結されて出力される。この仕様ってよくあるんですかね?分割しないと色々不便なので、それを分割するコードを書いてみた。 対…

【matplotlib.pyplot.stem】stem plotで残差を表現したい:回帰直線からの残差【python】

前回の記事ではstemを使って残差を表現しようとしたが、yが定数の時しか対応できなかった。 chemstat.hatenablog.com 今回はこんな感じで回帰直線から残差を引くことを目指す。 スマートな答えは見つからず結局それぞれの点でstemプロットをするのがよさそう…

【matplotlib.pyplot.stem】stem plotで残差を表現したい:定数からの残差【python】

これまでいくつかの記事でグラフ中に残差を表現するための線を引いてきた。 これどうやっていたかというと、こんな感じで残差を引く用のデータを作成して一個ずつプロットする、という方法をとっていた。 def return_residue_plot(np_data_x, data_y, b, a):…

【メモ書き】pythonで範囲棒グラフを描く

この記事 で範囲棒グラフを描いたのだが、matplotにはプロットする関数が搭載されてないようだったので記録を残しておく。 結局積み上げ棒グラフにして、下部分を100%透過にした。 最初白にしていたのだけど、目盛線が消えちゃって困っていたところ透過する…

【メモ書き】pythonでロジット変換・オメガ変換・プロビット変換

この記事で各種線形変換を行ったので、忘れないようにpythonのコードも記載しておく。 #データの作成 data = np.random.normal(loc=25, scale = 5, size=100000) #平均25,標準偏差5のサンプル100000個 x = np.sort(data)# y = 1. * np.arange(len(data)) / (…

【メモ書き】グラフを作るためのコード(管理図)

グラフを作るときはpythonでデータを作ってパワポで調整しているのだが、この記事で使うグラフをpythonで描こうとしたところ色々設定に苦労したので、メモ書きとしてコードを残ししておく。 import numpy as np import matplotlib.pyplot as plt center = 50…

pythonを使った回帰分析のまとめ

pythonを使った回帰分析について、いくつかライブラリを紹介したのでこの記事にまとめておく。今後なにか増えたらここに追記していく予定。 第一弾scikit-learn LinearRegression。機械学習によく使われているライブラリ。 これはそのうちもうちょっと勉強し…

pythonで回帰分析してみる⑤statsmodels.api編

この記事ではpythonを使って回帰分析する際のコードをまとめていく。いくつか方法がありそうなので、ライブラリごとに書いていければと思う。 今回はstatsmodels.api編。 コードはこちら。詳細は参考サイトを見て頂ければ。今回もメモ書き程度に残していく %…

pythonで回帰分析してみる④numpy.polyfit編

この記事ではpythonを使って回帰分析する際のコードをまとめていく。いくつか方法がありそうなので、ライブラリごとに書いていければと思う。 今回はnumpy.polyfit編。 いままでいろいろなライブラリを使ってきたが、numpyにもあったらしい。単純なn時の関数…

pythonで回帰分析してみる③scipy.optimize.minimize編

この記事ではpythonを使って回帰分析する際のコードをまとめていく。いくつか方法がありそうなので、ライブラリごとに書いていければと思う。 今回はscipy.optimize.minimize編。 curve_fitに比べるとやってることは変わらないし、手間が増えるだけなのだけ…

pythonで回帰分析してみる②scipy.optimize.curve_fit編

この記事ではpythonを使って回帰分析する際のコードをまとめていく。いくつか方法がありそうなので、ライブラリごとに書いていければと思う。 今回はscipy.optimize.curve_fit編。 使い方は参考サイトのほうが分かりやすいので、自分用のメモとして残してい…

pythonで回帰分析してみる①scikit-learn LinearRegression編

この記事ではpythonを使って回帰分析する際のコードをまとめていく。いくつか方法がありそうなので、ライブラリごとに変えていければと思う。 今回はscikit-learn LinerRegression編。 検索すると山ほど例が出てくるので、今回は自分のメモ用に簡単なコード…

グラフに使う色を決めておく

グラフを描くときは大体いつも赤、青、緑という思考停止配色を使ってるのだけれど、色弱者への配慮したほうが好ましい。 たまに調べても、毎回忘れてしまうので必要な色をここにまとめておく。 Google Chromeの拡張機能「Spectrum」を使うと色弱の人がどう見…

【python】quiverの矢印の長さをうまく調整したい【matplotlib.pyplot.quiver】

以前の記事でquiverを使って矢印をグラフに描く方法を紹介したのだが、長さがうまく調整できずに困っているという問題があった。 (x,y)=(0,0)から(3,1)に矢印を描きたい。まず普通に書いてみるとこんな感じになる。 %matplotlib notebook import matplotlib.…

【python】矢印を複数プロットしたい。【matplotlib.pyplot.quiver】

統計を勉強していたら、モーメントの話が出てきて、グラフに矢印をプロットしたくなった。リストで位置や長さを指定してまとめてプロットしたいなと思ったところ、quiverを使えばいいらしい、ということが分かったので、備忘録としてまとる。 plt.quiver(X,Y…