4

次のように定義された「長い」データフレームがあります。

q <- data.frame(Indicator.Code=factor(),Year=numeric(),Value=numeric())

Indicator.Codeそして、次のように、異なるそれぞれについて、年の関数として値を単一の xyplot にプロットしようとしています。

xyplot( Value~Year,data=q,group=Indicator.Code)

ここまでは順調ですね。今、線形回帰に対応する行を追加しようとしています

rlm(q$Value[q$Indicator.Code==a]~q$Year[q$Indicator.Code==a])

のすべての値に対してIndicator.Code

どうやったらよいかわかりません。回帰直線を追加する通常の方法、つまり

xyplot( Value~Year,data=q,group=Indicator.Code),
panel = function(x, y) {
  panel.xyplot(x, y)
  panel.abline(rlm(y ~ x))
}))

は正しく機能しません (データセット全体に対して単一の回帰を計算し、単一の回帰直線を追加します)。その上、私はすでに回帰を計算しており (グラフィックス以外にも必要です)、それらを再計算しなければならないという考えは嫌いです。

初心者が従うことができるヒントはありますか?

4

2 に答える 2

2

の個別のシンボルをプロットするカスタマイズされたパネル関数の場合group、ラティスでは、実際のパネル関数を の呼び出しでラップする必要がありますpanel.superpose()mtcars以下は、 data.frame内のデータを使用した例です。

library(lattice)
library(MASS)

myPanel <- function(x,y,...) {
    panel.xyplot(x,y,...)
    panel.abline(rlm(y~x), ...)
}

xyplot(mpg~disp, group = cyl, data = mtcars,
       panel = function(...) panel.superpose(panel.groups = myPanel, ...))

## Or, equivalently:
xyplot(mpg~disp, group = cyl, data = mtcars, 
       panel = panel.superpose, panel.groups = myPanel)

ここに画像の説明を入力

于 2013-05-03T15:15:52.137 に答える