概要
あなたは物事を正しく行っていますが、broken.lines()
(あなたの表記では、fted$fit
)の出力の意味を誤解しています。これらの値が と一致するとは期待できませんmpg
。
従属変数の一部についてはseg.Z
、破線が必要な変数のみに指定することで線形関係を維持できます。
壊れた.行()は何をしますか
のモデルをmpg
2 つの変数の関数として作成し、hp
とwt
. モデルは、これらの変数の両方で区分線形です。の値を予測するには、との両方mpg
を指定する必要があることに注意してください。hp
wt
この関数は、引数で指定された変数の 1 つが変化する場合のbroken.line()
予測を計算するために使用されます。変数に対して次のようにします。mpg
term
hp
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
ます。