2本以上の直線で部分的に近似する方法 複数の回帰直線の境界の同定

実験して得れた2つのパラーメータの関係を、散布図をプロットしてなんでもかんでも直線で近似してしまう例を見かけます。どんなランダムなデータでも最小二乗法の計算は可能なので、なんらかの直線は引けてしまいますし、相関係数なども計算できてしまいます。しかし、パッと見が直線関係に見えないデータに対して、回帰直線を引くことになんの意味があるのでしょうか。実験者の頭の中に、これとこれとが相関していて欲しい、これがこれの原因であって欲しいという気持ちがあるために、無理やり直線を引いてしまっているのではないかと思われる場合があります。

どんな曲線(直線)でデータを表すのかは、研究者の恣意的な判断です。Uの字型のデータ分布に直線を当てはめるのはナンセンスでしょう。つまり、カーブフィッティングの際の近似式の選択は、実験者の仮説が入り込んでいるわけです。

一本の直線で表すのは無理そうでも、部分部分でみると直線性があることがあります。だったら、区間を分けて複数の直線を当てはめてみるのも一つの手です。もちろん、そうする動機、すなわち仮説、すなわちデータの分布に対する合理的な説明(仮説)が存在するという前提です。

この解析手法で用いられる関数の名前は英語では、piece-wise linear functionと呼ぶようです。piece-wise linear functionでグーグル検索すると多数のサイトがヒットしました。

複数の直線によるフィッティング

https://www.codeproject.com/Articles/5282014/Segmented-Linear-Regression

https://datacadamia.com/data_mining/linear_spline

http://yetanothermathprogrammingconsultant.blogspot.com/2018/03/piecewise-linear-regression.html

https://slidetodoc.com/chapter-9-special-topics-in-regression-optional-copyright/

複数の直線による回帰の方法(Python利用例)

区間に分けて直線回帰を行うことは英語だと、piecewise linear regressionというようです。ピースワイズ、つまり「部分ごとに」ということ。

  1. How to apply piecewise linear fit in Python? stack overflow

 

https://datascience.stackexchange.com/questions/8457/python-library-for-segmented-regression-a-k-a-piecewise-regression

https://www.researchgate.net/profile/Charles-Jekel-2/publication/331231072_pwlf_A_Python_Library_for_Fitting_1D_Continuous_Piecewise_Linear_Functions/links/5c9107f945851564fae8aa57/pwlf-A-Python-Library-for-Fitting-1D-Continuous-Piecewise-Linear-Functions.pdf?origin=publication_detail

https://medium.com/@kangeugine/optimize-piecewise-linear-function-f47b8610993d

https://stackoverflow.com/questions/35415372/piecewise-regresion-python

https://stackoverflow.com/questions/19955686/fit-a-curve-for-data-made-up-of-two-distinct-regimes

https://online.stat.psu.edu/stat501/lesson/8/8.8

https://stats.stackexchange.com/questions/14538/not-usual-piecewise-linear-regression

Rによる複数の直線の回帰

http://yetanothermathprogrammingconsultant.blogspot.com/2018/03/piecewise-linear-regression.html

複数の直線による回帰の方法(MATLABの利用例)

https://jp.mathworks.com/matlabcentral/answers/426524-how-to-curve-fit-a-data-with-multiple-linear-line-which-regression-method-suits

セグメントごとの直線回帰(GraphPadの利用例)

GraphPadでは2つの区間に分けて行う直線回帰はサポートしているようです。3つの区間の場合も手作業でできるようです。

https://www.graphpad.com/guides/prism/latest/curve-fitting/reg_segmental_linear_regression.htm

 

論文

 

https://www.ams.org/journals/mcom/1961-15-073/S0025-5718-1961-0119390-6/S0025-5718-1961-0119390-6.pdf

 

Muggeo, V. M. (2003). Estimating regression models with unknown breakpoints. Statistics in medicine, 22(19), 3055-3071.

https://www.hindawi.com/journals/cmmm/2019/9810675/