23

いくつかのポイントを含むデータセットがあり、それに線を合わせたいと思います。関数で試してみましたloess。残念ながら、非常に奇妙な結果が得られます。以下のプロットを参照してください。私は、ポイントとプロット全体をさらに通過する線を期待しています。どうすればそれを達成できますか? プロット

それを再現する方法:

https://www.dropbox.com/s/ud32tbptyvjsnp4/data.R?dl=1(2 kbのみ)からデータセットをダウンロードし、次のコードを使用します。

load(url('https://www.dropbox.com/s/ud32tbptyvjsnp4/data.R?dl=1'))
lw1 = loess(y ~ x,data=data)
plot(y ~ x, data=data,pch=19,cex=0.1)
lines(data$y,lw1$fitted,col="blue",lwd=3)

どんな助けでも大歓迎です。ありがとう!

4

3 に答える 3

64

yに対してではなく、に対して近似値をプロットしましxた。また、線をプロットする前にx値を並べ替える必要があります。これを試して:

lw1 <- loess(y ~ x,data=data)
plot(y ~ x, data=data,pch=19,cex=0.1)
j <- order(data$x)
lines(data$x[j],lw1$fitted[j],col="red",lwd=3)

ここに画像の説明を入力してください

于 2013-03-11T10:00:37.493 に答える
2

遅すぎるかもしれませんが、ggplot(およびdplyr)にはオプションがあります。最初に、黄土線を点にプロットするだけの場合は、次を試すことができます。

library(ggplot2)
load(url("https://www.dropbox.com/s/ud32tbptyvjsnp4/data.R?dl=1"))
ggplot(data, aes(x, y)) + 
geom_point() +
geom_smooth(method = "loess", se = FALSE)

<code>ggplot::geom_smooth()</code> による黄土線

もう 1 つの方法はpredict()、レス フィットを使用した関数によるものです。たとえば、dplyr 関数を使用して、次の新しい列に予測を追加しました"loess"

  library(dplyr)
  data %>%
  mutate(loess = predict(loess(y ~ x, data = data))) %>%
  ggplot(aes(x, y)) +
  geom_point(color = "grey50") +
  geom_line(aes(y = loess))

<code>predict()</code> と <code>geom_line()</code> による黄土線

更新: 提供されたサンプル データをロードするコード行を追加しました 更新 2 : @phigeom_smoot()コメントによる関数名の修正

于 2017-09-07T20:58:58.347 に答える