6

格子状の単一パネルに複数のグループを重ね合わせ、独立した回帰直線が必要です。

条件付け因子を使用して、それぞれに回帰直線を持つ複数のパネルを取得するのは非常に簡単です。

xyplot(
  Petal.Width  ~ Petal.Length | Species,
  data = iris,
  panel = function(x, y, ...) {
    panel.xyplot(x, y, ...)
    panel.abline(lm(y~x), col='#0080ff')
  },
  grid = TRUE
)

ここに画像の説明を入力

重ね合わせた xyplot 内のすべてのポイントの単一の回帰を出力することもかなり簡単です。

xyplot(
  Petal.Width ~ Petal.Length,
  data = iris,
  groups = Species,
  panel = function(x, y, ...) {
    panel.xyplot(x, y, ...)
    panel.abline(lm(y~x))
  },
  grid = TRUE,
  auto.key = list(title='Species', space='right')
)

ここに画像の説明を入力

しかし、これは私が必要とするものではありません。これに対する回答を入力しますが、面倒です。それが獣の本性なのかもしれません。

分かりやすいものを探しています。ラティスが推奨されますが、優れた ggplot ソリューションも受け入れられる場合があります。明確でない場合は、Excel ユーザーが使用できるようにプロットを作成しています。

4

3 に答える 3

9

これが私が思いついたものです:

xyplot(
  Petal.Width  ~ Petal.Length,
  groups = Species,
  data = iris,
  panel = function(x, y, ...) {
    panel.superpose(x, y, ...,
                    panel.groups = function(x,y, col, col.symbol, ...) {
                      panel.xyplot(x, y, col=col.symbol, ...)
                      panel.abline(lm(y~x), col.line=col.symbol)
                    }
    )
  },
  grid = TRUE,
  auto.key = list(title='Species', space='right')
)

ここに画像の説明を入力

于 2013-01-06T18:57:58.753 に答える
3

これを単純化できるようです

xyplot(
  Petal.Width  ~ Petal.Length,
  groups = Species,
  data = iris,
  panel = panel.superpose, # must for use of panel.groups
  panel.groups=function(x, y, col, col.symbol, ...) {
                      panel.xyplot(x, y, col=col.symbol, ...)
                      panel.lmline(x, y, col.line=col.symbol)
  },
  grid = TRUE,
  auto.key = list(title='Species', space='right')
)
于 2014-11-12T09:28:42.153 に答える