[R] Elegant way to express residual calculation in R?
Liaw, Andy
andy_liaw at merck.com
Tue Feb 28 05:02:37 CET 2006
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.
>
> X<- data.frame(read.table(textConnection("
> Machine.1 Machine.2 Machine.3
> 53 61 51
> 47 55 51
> 46 52 49
> 50 58 54
> 49 54 50"
> ), header=TRUE))
> 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)) #
> length(machine.adjustment)==3
> operator.adjustment<- rowMeans(X) - mean(mean(X)) #
> length(operator.adjustment)==5
> X.predicted<- numeric(0)
> for (j in 1:ncol(X))
> {
> new.col<- mean(mean(X)) + operator.adjustment +
> machine.adjustment[j]
> 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 at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>
>
More information about the R-help
mailing list