Hi:

Someone off-list (Josh Wiley - thank you) mentioned the Error() term in the
OP's ANOVA, which I missed in responding to the post - sorry for the
misinformation. Using the npk example with code that Josh showed me, we
have, for the following model,

npk.aov2 <- aov(yield ~ N*P*K + Error(block/P), data = npk)
npk.aovE2 <- summary(npk.aov2)
str(npk.aovE2)
List of 3
 $ Error: block  :List of 1
  ..$ :Classes ‘anova’ and 'data.frame':        2 obs. of  5 variables:
  .. ..$ Df     : num [1:2] 1 4
  .. ..$ Sum Sq : num [1:2] 37 306
  .. ..$ Mean Sq: num [1:2] 37 76.6
  .. ..$ F value: num [1:2] 0.483 NA
  .. ..$ Pr(>F) : num [1:2] 0.525 NA
  ..- attr(*, "class")= chr [1:2] "summary.aov" "listof"
 $ Error: block:P:List of 1
  ..$ :Classes ‘anova’ and 'data.frame':        3 obs. of  5 variables:
  .. ..$ Df     : num [1:3] 1 1 4
  .. ..$ Sum Sq : num [1:3] 8.4 33.1 38.3
  .. ..$ Mean Sq: num [1:3] 8.4 33.14 9.57
  .. ..$ F value: num [1:3] 0.878 3.464 NA
  .. ..$ Pr(>F) : num [1:3] 0.402 0.136 NA
  ..- attr(*, "class")= chr [1:2] "summary.aov" "listof"
 $ Error: Within :List of 1
  ..$ :Classes ‘anova’ and 'data.frame':        5 obs. of  5 variables:
  .. ..$ Df     : num [1:5] 1 1 1 1 8
  .. ..$ Sum Sq : num [1:5] 189.282 95.202 21.282 0.482 147.023
  .. ..$ Mean Sq: num [1:5] 189.282 95.202 21.282 0.482 18.378
  .. ..$ F value: num [1:5] 10.2994 5.1802 1.158 0.0262 NA
  .. ..$ Pr(>F) : num [1:5] 0.0124 0.0524 0.3133 0.8754 NA
  ..- attr(*, "class")= chr [1:2] "summary.aov" "listof"
 - attr(*, "class")= chr "summary.aovlist"

In this case, the p-values can be gotten from each component of the list,
but one has to read the output from str() carefully. For example, under each
$Error component is another component, and it is the subcomponent that needs
to be subsetted to grab the p-values:

Top level:
> npk.aovE2[[1]][[1]][, 5]
[1] 0.5252361        NA

Mid-level:
> npk.aovE2[[2]][[1]][, 5]
[1] 0.4017266 0.1362185        NA

Bottom level:
> npk.aovE2[[3]][[1]][, 5]
[1] 0.01243794 0.05239664 0.31325902 0.87540509         NA

BTW, this is one reason why str() is such an important function in R.

Thanks to Peter and Josh for pointing out my error; apologies for the
thickheadedness.

Dennis

On Wed, Sep 29, 2010 at 5:56 AM, peter dalgaard <pdalgd@gmail.com> wrote:

>
> On Sep 29, 2010, at 14:25 , Dennis Murphy wrote:
>
> >
> > test.summary[[1]][, 5][1]
> >
> > You mean that wasn't obvious?   :)
>
> Worse, it doesn't actually work...
>
> > test.summary <- summary(npk.aovE)
> > test.summary[[1]][, 5]
> Error in `[.default`(test.summary[[1]], , 5) :
>  incorrect number of dimensions
> > test.summary$"Error: block"[[1]][, 5]
> [1] 0.5252361        NA
> > test.summary[[1]][[1]][, 5]
> [1] 0.5252361        NA
>
> I.e., you need an extra list extraction operator. The data structure goes
>
> List of 2
>  $ Error: block :List of 1
>  ..$ :Classes ‘anova’ and 'data.frame':        2 obs. of  5 variables:
>  .. ..$ Df     : num [1:2] 1 4
>  .. ..$ Sum Sq : num [1:2] 37 306
> ...
>  and the intermediate list has class ("summary.aov","listof"). I believe
> the point is that you can have a matrix LHS and get a table for each of its
> columns.
>
> --
> Peter Dalgaard
> Center for Statistics, Copenhagen Business School
> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
> Phone: (+45)38153501
> Email: pd.mes@cbs.dk  Priv: PDalgd@gmail.com
>
>

	[[alternative HTML version deleted]]

