Rの散布図に非線形トレンドラインを追加するにはどうすればよいですか?[閉まっている]


回答:


34

いくつかのデータを作成しましょう。

n <-100
x <-seq(n)
y <-rnorm(n、50 + 30 * x ^(-0.2)、1)
データ<-data.frame(x、y)

以下は、黄土線または非線形回帰の近似をどのように当てはめることができるかを示しています。

plot(y〜x、データ)

#黄土線に合わせる
loess_fit <-loess(y〜x、データ)
lines(Data $ x、predict(loess_fit)、col = "blue")

#非線形回帰に適合
nls_fit <-nls(y〜a + b * x ^(-c)、Data、start = list(a = 80、b = 20、 
    c = 0.2))
lines(Data $ x、predict(nls_fit)、col = "red")

チャンクexport_plotのプロット


1
プロットについては、これらの遭遇順序の問題のために、このアドバイスは便利です
tflutre

23

あなたが使用している場合ggplot2(第3の描画システムは、Rで、ベースRと格子の後に)、これは次のようになります。

library(ggplot2)
ggplot(Data, aes(x,y)) + geom_point() + geom_smooth()

プロット

データを平滑化する方法を選択できます?stat_smooth。詳細と例を参照してください。


素敵なグラフと説明!しかし、影の領域はどういう意味ですか?
ダーウィンPC

3
網掛け部分は、平滑化された線の周りの信頼区間です。Vincentが述べたようにstat_smooth入力?stat_smoothしてRヘルプファイルにアクセスすることで、自分でこれを見つけることができます。:-)
私のようなコードに

9

探しているものを正確に知ることなく、latticeパッケージを使用して、簡単に黄土曲線を追加できますtype="smooth"; 例えば、

> library(lattice)
> x <- rnorm(100)
> y <- rnorm(100)
> xyplot(y ~ x, type=c("smooth", "p"))

help("panel.loess")使用する多項式の次数などを変更するために、黄土適合ルーチンに渡すことができる引数を参照してください。

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

更新

黄土曲線の色を変更するには、小さな関数を記述し、それをpanelパラメーターとして渡しますxyplot

x <- rnorm(100)
y <- rnorm(100)

panel_fn <- function(x, y, ...)
{
    panel.xyplot(x, y, ...)
    panel.xyplot(x, y, type="smooth", col="red", ...)
}

xyplot(y ~ x, panel=panel_fn)

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


どのようにして線を別の色にしますか?
EngrStudent-モニカの復活

1
@EngrStudent答えを更新しました。
ジェイソンモーガン

8

あなたの質問は少しあいまいなので、私はあなたの問題が何であるかについていくつかの仮定をするつもりです。散布図を作成してデータを少し説明できれば、非常に役立ちます。間違った仮定をしている場合は、私の答えを無視してください。

まず、データが、非線形であると合理的に信じるプロセスを記述する可能性があります。たとえば、車が急ブレーキで停止する距離と車の速度を回帰しようとしている場合、物理学は、車両のエネルギーは速度ではなく速度の二乗に比例することを教えてくれます自体。したがって、この場合は多項式回帰を試してみてください(Rでは)のようなことができますmodel <- lm(d ~ poly(v,2),data=dataset)。さまざまな非線形性を回帰モデルに組み込む方法に関するドキュメントがたくさんあります。

一方、「グラグラ」のラインがあり、グラグラの理由がわからない場合、開始点として適切なのはおそらく局所加重回帰またはloessR でしょう。これは小さな線形回帰データセット全体ではなく、リージョン。「k最近傍」バージョンを想像するのが最も簡単です。ここでは、任意のポイントで曲線の値を計算し、関心のあるポイントに最も近いkポイントを見つけて、それらを平均します。レスはそのようなものですが、直線的な平均の代わりに回帰を使用します。これにはmodel <- loess(y ~ x, data=dataset, span=...)span変数が平滑化の度合いを制御するを使用します。

3番目の手で(手に負えない)-あなたはトレンドについて話していますか?これは一時的な問題ですか?もしそうなら、トレンドラインと統計的有意性を過剰に解釈することに少し注意してください。時系列の傾向は「自己回帰」プロセスに現れる可能性があり、これらのプロセスではプロセスのランダム性がランダムノイズからトレンドを構築することがあり、統計的有意性検定が間違っていると有意でないことがわかります。


6

散布図のサンプルポイントと滑らかな曲線を同じグラフに配置する:

  library(graphics)
  ## Create some x,y sample points falling on hyperbola, but with error:
  xSample = seq(0.1, 1.0, 0.1)
  ySample = 1.0 / xSample
  numPts <- length(xSample)
  ySample <- ySample + 0.5 * rnorm(numPts) ## Add some noise

  ## Create x,y points for smooth hyperbola:
  xCurve <- seq(0.1, 1.0, 0.001)
  yCurve <- 1.0 / xCurve

  plot(xSample, ySample, ylim = c(0.0, 12.0))   ## Plot the sample points
  lines(xCurve, yCurve, col = 'green', lty = 1) ## Plot the curve

滑らかな曲線の散布図

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.