「変更点」分析、またはnls()
R を使用したマルチフェーズ回帰を実装しようとしています。
ここに私が作ったいくつかの偽のデータがあります。データを近似するために使用する式は次のとおりです。
これは、特定の切片と勾配(および)で特定のポイントまでデータを近似し、特定のx値()の後に、勾配をです。それが最大のことです。ポイントの前は、0に等しくなり、はゼロにされます。
したがって、これを行うための私の機能は次のとおりです。
changePoint <- function(x, b0, slope1, slope2, delta){
b0 + (x*slope1) + (max(0, x-delta) * slope2)
}
そして、私はこの方法でモデルを適合させようとします
nls(y ~ changePoint(x, b0, slope1, slope2, delta),
data = data,
start = c(b0 = 50, slope1 = 0, slope2 = 2, delta = 48))
データを作成したので、それらが開始パラメーターであることを知っているので、それらの開始パラメーターを選択しました。
しかし、私はこのエラーを受け取ります:
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
不幸なデータを作成したばかりですか?最初にこれを実際のデータに当てはめようとしましたが、同じエラーが発生していましたが、最初の開始パラメーターでは不十分であることがわかりました。