2

データ セットを使用して、との関数として のmtcars折れ線回帰適合を決定しようとしています。ブレークポイントは のみから来ています。コードは次のとおりです。mpghpwthp

mpg = mtcars$mpg
wt = mtcars$wt
hp = mtcars$hp

reg = lm (mpg ~ hp +wt)

hp_thresh = 150
wt_thresh = 3

library(segmented)
seg.o = segmented (reg,seg.Z=~hp+wt, psi=list (hp=hp_thresh, wt=wt_thresh))
fted = broken.line (seg.o, term="hp") # mpg fit for hp breakpoints

fted$fit値は意味がありません (それらを mpg 値と比較してください)。関数の使用法に欠けている単純なものがあると思います。

編集:

さらに明確にするために:私は、セグメント化された関係のみを使用し、線形に含めることを検討mpgしています。どうすればそれができますか?hpwt

forのみの壊れた関係を持つようにhp_threshfor の入力で使用しようとしましたが、次のエラーが表示されます。segmented()hpseg.Zpsi

4

1 に答える 1

2

概要

あなたは物事を正しく行っていますが、broken.lines()(あなたの表記では、fted$fit)の出力の意味を誤解しています。これらの値が と一致するとは期待できませんmpg

従属変数の一部についてはseg.Z、破線が必要な変数のみに指定することで線形関係を維持できます。

壊れた.行()は何をしますか

のモデルをmpg2 つの変数の関数として作成し、hpwt. モデルは、これらの変数の両方で区分線形です。の値を予測するには、との両方mpgを指定する必要があることに注意してください。hpwt

この関数は、引数で指定された変数の 1 つが変化する場合のbroken.line()予測を計算するために使用されます。変数に対して次のようにします。mpgtermhp

fted = broken.line (seg.o, term="hp")

ただし、予測するには、 の値も指定する必要があることを忘れないでくださいwt。取得する値fted$fitは、実際にwtはゼロのままで計算されます。

predict()これは、モデルから予測を取得するときに使用する関数である を使用して確認できます。

pred <- predict(seg.o, data.frame(hp = hp, wt = 0))
pred - fted$fit
##  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 
##  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

モデルからの予測の作成

モデルの予測を と比較したい場合はmpg、両方の変数に同じ値を使用する必要がありhpますwt。これは予測でも実行できます。

pred <- predict(seg.o, data.frame(hp = hp, wt = wt))
plot(hp, mpg)
points(hp, pred, col = "red")

ここに画像の説明を入力

ご覧のとおり、この方法で生成された値はほぼ と一致しmpgます。を使用するのではなく、この方法でモデルの品質をチェックする必要がありますbroken.line()

区分線形関係のプロット

mpgまた、 と変数の 1 つとの間の区分的線形関係を確認することもできます。これらの値は既に で計算していますが、次のようftedに直接プロットすることもできます。seg.o

plot(seg.o, term = "hp")
points(hp, fted$fit, col = "red")

ここに画像の説明を入力

plot()についても、変更する変数を指定する必要があることに注意してください(ここではhp)。もう一方は再びゼロに保たれます。からのポイントも追加しfted$fitて、プロットが で計算されたものと実際に等しいことを示しましたbroken.line

1 つの変数のみに折れ線を当てはめる

従属変数の 1 つだけに折れ線を当てはめ、他の変数の線形関係を維持する場合は、折れ線が必要な変数のみを指定する必要がありますseg.Z。次のように行うことがhpできます。

seg.o2 <- segmented(reg, seg.Z = ~hp, psi = list(hp = hp_thresh))

これが機能したことを示すために、変数の 1 つだけを変化させてモデルを予測し、プロットします。

可変hp、固定を維持wt`:

pred_hp <- predict(seg.o2, data.frame(hp = 50:300, wt = 0))
plot(50:300, pred_hp, type = "l")

ここに画像の説明を入力

可変wt、固定を維持hp`:

pred_wt <- predict(seg.o2, data.frame(wt = seq(1.5, 5.5, by = 0.1), hp = 0))
plot(seq(1.5, 5.5, by = 0.1), pred_wt, type = "l")

ここに画像の説明を入力

ご覧のとおり、 のモデルはmpgに線形的に依存しwtていますが、 との線形関係は壊れていhpます。

于 2016-04-14T11:52:38.700 に答える