# Re: [R] Elegant way to express residual calculation in R?

From: Liaw, Andy <andy_liaw_at_merck.com>
Date: Tue 28 Feb 2006 - 15:02:37 EST

Not sure if the following would qualify as elegant... It's easier to work with a matrix instead of data frame:

x.mat <- data.matrix(X)
xmean <- mean(x.mat)
operator.eff <- ave(x.mat, row(x.mat)) - xmean machine.eff <- ave(x.mat, col(x.mat)) - xmean (predicted.x <- xmean + operator.eff + machine.eff) resid.x <- x.mat - predicted.x
sum(resid.x^2)

You can also use aov(), but you already know that...

Andy

From: John McHenry
>
> Hi All,
>
> I am illustrating a simple, two-way ANOVA using the
> following data and I'm
> having difficulty in expressing the predicted values
> succinctly in R.
>
> Machine.1 Machine.2 Machine.3
> 53 61 51
> 47 55 51
> 46 52 49
> 50 58 54
> 49 54 50"
> rownames(X)<- paste("Operator.", 1:nrow(X), sep="")
> print(X)
>
> # I'd like to know if there is a more elegant way to
> calculate the residuals
> # than the following, which seems to be rather a kludge.
> If you care to read
> # the code you'll see what I mean.
>
> machine.adjustment<- colMeans(X) - mean(mean(X)) #
> operator.adjustment<- rowMeans(X) - mean(mean(X)) #
> X.predicted<- numeric(0)
> for (j in 1:ncol(X))
> {
> new.col<- mean(mean(X)) + operator.adjustment +
> X.predicted<- cbind(X.predicted, new.col)
> }
> print(X.predicted)
> X.residual<- X - X.predicted
> SS.E<- sum( X.residual^2 )
>
> It seems like there ought to be some way of doing that a
> little bit cleaner ...
>
> Thanks,
>
> Jack.
>
>
> ---------------------------------
>
> Bring photos to life! New PhotoMail makes sharing a breeze.
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help