0

ベクトルyのすべての値が複数回保存されているデータセットに非線形回帰直線をプロットする方法を探しているので、次のようなものを使用しようとしました:

x <- c(1,2,3,4,5,6,7,8,9,10)
y <- c(1,4,9,15,25,9,36,25,36,25)
reg4 <- lm( x ~ y + I(y^2) )
plot(x ~ y)
lines(y, predict(reg4), type="l", col="red", lwd=1)

これによりhttp://i.imgur.com/qSEVNdT.pngが得られます ここに画像の説明を入力

だから私の質問は、たとえば、各 y エントリに何らかの平均値を使用する方法はありますか? または、複数の行に分岐する/複数の「エントリ」があるポイントでより低いy値に戻るものの代わりに、「連続した」行にするだけです。

4

2 に答える 2

1

このような場合、predict共変量の範囲にわたってモデルから取得するのが最善です。の範囲で等間隔に配置された、たとえば 50 または 100 の場所に対してこれを行いますx。必要に応じて予測する場所の数を増減します。より複雑な応答には、より多くの場所が必要になるなどです。これを行うと、newdata提供される順序が次の順序になるため、スパゲッティ プロットの問題も解決します。x

x <- c(1,2,3,4,5,6,7,8,9,10)
y <- c(1,4,9,15,25,9,36,25,36,25)
reg4 <- lm( x ~ y + I(y^2) )
## predictions
pred <- data.frame(y = seq(min(y), max(y), length = 100))
pred <- transform(pred, x = predict(reg4, newdata = pred))
## plot
plot(x ~ y)
lines(x ~ y, data = pred, type = "l", col = "red", lwd = 1)

ここに画像の説明を入力

于 2013-03-31T17:01:25.710 に答える
0

この問題は、データの結びつきによるものではありません。特定の の値に対してy、予測は 1 つしかありません。問題は、ポイントがソートされていないため、それらを結合すると、線が絡まってしまうことです。orderポイントの並べ替えに使用できます。

plot(
  x ~ y, 
  xlab = "y", ylab = "x"  # Confusing...
)
i <- order(y)
lines( y[i], predict(reg4)[i] )
于 2013-03-31T16:51:51.823 に答える