0

nlme パッケージの lmList() を使用して、因子のさまざまなレベルの箱ひげ図を作成しようとしています。ヘルプ ページの例では機能しますが、私のデータは次のエラーを返します。

 library(nlme)
 ##dataframe used (simplified):
   **data.1**
   IDf x.var.1   y.var.1
1    1       1  1.856491
2    1       2  2.999224
3    1       3  3.943896
4    1       4  4.903249
5    1       5  6.034319
6    2       6  6.986847
7    2       7  8.024806
8    2       8  9.139255
9    2       9  9.986437
10   2      10 10.760508

##creating the lmlist file fm1
fm2 <- lmList(y.var.1 ~ x.var.1 | IDf, data.1, na.action = na.exclude) 

##plotting fm2
Call:
    Model: y.var.1 ~ x.var.1 | IDf 
       Data: data.1 
Coefficients:
(Intercept)   x.var.1
1   0.8695317 1.0259681
2   1.3724091 0.9508952

Degrees of freedom: 10 total; 6 residual
Residual standard error: 0.1042786

##plotting boxplots ##(or any kinds of plots really)
> plot(fm2, IDf ~ resid(.))

##returning error:
Error in plot.lmList(fm2, IDf ~ resid(.)) : object 'cF' not found

今、私は検索して検索しましたが、このオブジェクト「cF」が何を意味するのか理解できないようです。どんな助けも大歓迎です!

##EDIT:
> dput(data.1)
structure(list(IDf = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2), x.var.1 = 1:10, 
y.var.1 = c(1.85649137285461, 2.99922390104585, 3.94389558063648, 
4.90324945760581, 6.03431888678115, 6.98684730318977, 8.0248061251629, 
9.13925481513909, 9.98643662828079, 10.7605079666861)), .Names = c("IDf", 
"x.var.1", "y.var.1"), row.names = c(NA, -10L), class = "data.frame")
4

1 に答える 1

1

これを試して:

library(nlme)
fm2 <- lmList(y.var.1 ~ x.var.1 | IDf, data.1, na.action = na.exclude)
lapply(fm2 ,  function(lmob) plot(lmob$model$x.var.1, lmob$residuals) )

nlme :: lmListのlmList関数は、S4オブジェクトを返しませんが、番号付きのエントリ( "IDf"の番号に対応する)を持つ従来のリストを返します。

nlmeのlmListはlme4::lmListとはかなり異なるため、以前のコメントとコードは(少し)ターゲットから外れていました。

使用しているパッケージlmListはlme4だと思います。plot.lmListlme4でのヘルプページが見つかりませんが、関数が存在することはわかります。次の形式のサポートが文書化されているかどうかを確認したいと思っていました:plot(lmList-object、formula)。showMethodsを使用すると、そのようなサポートが必要であることがわかります。

showMethods("plot")
#-------
Function: plot (package graphics)
...snipped
x="lmList.confint", y="ANY"
x="lmList", y="formula"
    (inherited from: x="ANY", y="ANY")
...snipped...

関数呼び出しがresidRHSで機能する可能性がどれほどあるか、またはグループ化パラメーターがLHSで機能する可能性がどれほどあるかはわかりませんでした。最終的にplot.lmListを機能させることができませんでした。私が仕事に取り掛かったのはこのハックでした:

lapply(fm2@.Data, function(lmob) plot(seq_along(lmob$residuals), lmob$residuals) )

私もこれを機能させました:

 lapply(fm2@.Data, function(lmob) plot(lmob$model$x.var.1, lmob$residuals) )
于 2013-02-28T17:30:27.110 に答える