Stephen Sefick
2011-Oct-26 18:19 UTC
[R] Extra Sums of Squares from an anova table - why are the values different?
#For full disclosure- I am working on a homework problem. However, my question revolves around computer rounding, I think. x <- (structure(list(y = c(0.222, 0.395, 0.422, 0.437, 0.428, 0.467, 0.444, 0.378, 0.494, 0.456, 0.452, 0.112, 0.432, 0.101, 0.232, 0.306, 0.0923, 0.116, 0.0764, 0.439, 0.0944, 0.117, 0.0726, 0.0412, 0.251, 2e-05), x1 = c(7.3, 8.7, 8.8, 8.1, 9, 8.7, 9.3, 7.6, 10, 8.4, 9.3, 7.7, 9.8, 7.3, 8.5, 9.5, 7.4, 7.8, 7.7, 10.3, 7.8, 7.1, 7.7, 7.4, 7.3, 7.6), x2 = c(0, 0, 0.7, 4, 0.5, 1.5, 2.1, 5.1, 0, 3.7, 3.6, 2.8, 4.2, 2.5, 2, 2.5, 2.8, 2.8, 3, 1.7, 3.3, 3.9, 4.3, 6, 2, 7.8), x3 = c(0, 0.3, 1, 0.2, 1, 2.8, 1, 3.4, 0.3, 4.1, 2, 7.1, 2, 6.8, 6.6, 5, 7.8, 7.7, 8, 4.2, 8.5, 6.6, 9.5, 10.9, 5.2, 20.7), x11 = c(53.29, 75.69, 77.44, 65.61, 81, 75.69, 86.49, 57.76, 100, 70.56, 86.49, 59.29, 96.04, 53.29, 72.25, 90.25, 54.76, 60.84, 59.29, 106.09, 60.84, 50.41, 59.29, 54.76, 53.29, 57.76), x22 = c(0, 0, 0.49, 16, 0.25, 2.25, 4.41, 26.01, 0, 13.69, 12.96, 7.84, 17.64, 6.25, 4, 6.25, 7.84, 7.84, 9, 2.89, 10.89, 15.21, 18.49, 36, 4, 60.84), x33 = c(0, 0.09, 1, 0.04, 1, 7.84, 1, 11.56, 0.09, 16.81, 4, 50.41, 4, 46.24, 43.56, 25, 60.84, 59.29, 64, 17.64, 72.25, 43.56, 90.25, 118.81, 27.04, 428.49), x12 = c(0, 0, 6.16, 32.4, 4.5, 13.05, 19.53, 38.76, 0, 31.08, 33.48, 21.56, 41.16, 18.25, 17, 23.75, 20.72, 21.84, 23.1, 17.51, 25.74, 27.69, 33.11, 44.4, 14.6, 59.28), x13 = c(0, 2.61, 8.8, 1.62, 9, 24.36, 9.3, 25.84, 3, 34.44, 18.6, 54.67, 19.6, 49.64, 56.1, 47.5, 57.72, 60.06, 61.6, 43.26, 66.3, 46.86, 73.15, 80.66, 37.96, 157.32), x23 = c(0, 0, 0.7, 0.8, 0.5, 4.2, 2.1, 17.34, 0, 15.17, 7.2, 19.88, 8.4, 17, 13.2, 12.5, 21.84, 21.56, 24, 7.14, 28.05, 25.74, 40.85, 65.4, 10.4, 161.46)), .Names = c("y", "x1", "x2", "x3", "x11", "x22", "x33", "x12", "x13", "x23"), row.names = c(NA, -26L), class = "data.frame") ) x$x11 <- x$x1^2 x$x22 <- x$x2^2 x$x33 <- x$x3^2 x$x12 <- x$x1*x$x2 x$x13 <- x$x1*x$x3 x$x23 <- x$x2*x$x3 x.lm <- lm(y~x1+x2+x3+x11+x22+x33+x12+x13+x23, data=x) anova(lm(y~x1+x2+x3,data=x), x.lm) anova(x.lm) #I want to test #Ho:y~x1+x2+x3 #Ha:y~x1+x2+x3+x11+x22+x33+x12+x13+x23 ((0.00945+0.01340+0.00200+0.00568+0.00489+0.00050)/6)/(0.00371) #Thanks #Stephen Sefick
Joshua Wiley
2011-Oct-26 19:23 UTC
[R] Extra Sums of Squares from an anova table - why are the values different?
Hi Stephen, Thanks for the disclosure. If you are referring to the difference in the third decimal place between your calculated F value and what R gives, yes, it is due to rounding. Try this: ## extract the mean squares from anova() and store in msq msq <- anova(x.lm)[, "Mean Sq"] mean(msq[4:9])/msq[10] Cheers, Josh On Wed, Oct 26, 2011 at 11:19 AM, Stephen Sefick <ssefick at gmail.com> wrote:> #For full disclosure- I am working on a homework problem. ?However, my > question revolves around computer rounding, I think. > > > x <- (structure(list(y = c(0.222, 0.395, 0.422, 0.437, 0.428, 0.467, > 0.444, 0.378, 0.494, 0.456, 0.452, 0.112, 0.432, 0.101, 0.232, > 0.306, 0.0923, 0.116, 0.0764, 0.439, 0.0944, 0.117, 0.0726, 0.0412, > 0.251, 2e-05), x1 = c(7.3, 8.7, 8.8, 8.1, 9, 8.7, 9.3, 7.6, 10, > 8.4, 9.3, 7.7, 9.8, 7.3, 8.5, 9.5, 7.4, 7.8, 7.7, 10.3, 7.8, > 7.1, 7.7, 7.4, 7.3, 7.6), x2 = c(0, 0, 0.7, 4, 0.5, 1.5, 2.1, > 5.1, 0, 3.7, 3.6, 2.8, 4.2, 2.5, 2, 2.5, 2.8, 2.8, 3, 1.7, 3.3, > 3.9, 4.3, 6, 2, 7.8), x3 = c(0, 0.3, 1, 0.2, 1, 2.8, 1, 3.4, > 0.3, 4.1, 2, 7.1, 2, 6.8, 6.6, 5, 7.8, 7.7, 8, 4.2, 8.5, 6.6, > 9.5, 10.9, 5.2, 20.7), x11 = c(53.29, 75.69, 77.44, 65.61, 81, > 75.69, 86.49, 57.76, 100, 70.56, 86.49, 59.29, 96.04, 53.29, > 72.25, 90.25, 54.76, 60.84, 59.29, 106.09, 60.84, 50.41, 59.29, > 54.76, 53.29, 57.76), x22 = c(0, 0, 0.49, 16, 0.25, 2.25, 4.41, > 26.01, 0, 13.69, 12.96, 7.84, 17.64, 6.25, 4, 6.25, 7.84, 7.84, > 9, 2.89, 10.89, 15.21, 18.49, 36, 4, 60.84), x33 = c(0, 0.09, > 1, 0.04, 1, 7.84, 1, 11.56, 0.09, 16.81, 4, 50.41, 4, 46.24, > 43.56, 25, 60.84, 59.29, 64, 17.64, 72.25, 43.56, 90.25, 118.81, > 27.04, 428.49), x12 = c(0, 0, 6.16, 32.4, 4.5, 13.05, 19.53, > 38.76, 0, 31.08, 33.48, 21.56, 41.16, 18.25, 17, 23.75, 20.72, > 21.84, 23.1, 17.51, 25.74, 27.69, 33.11, 44.4, 14.6, 59.28), > ? ?x13 = c(0, 2.61, 8.8, 1.62, 9, 24.36, 9.3, 25.84, 3, 34.44, > ? ?18.6, 54.67, 19.6, 49.64, 56.1, 47.5, 57.72, 60.06, 61.6, > ? ?43.26, 66.3, 46.86, 73.15, 80.66, 37.96, 157.32), x23 = c(0, > ? ?0, 0.7, 0.8, 0.5, 4.2, 2.1, 17.34, 0, 15.17, 7.2, 19.88, > ? ?8.4, 17, 13.2, 12.5, 21.84, 21.56, 24, 7.14, 28.05, 25.74, > ? ?40.85, 65.4, 10.4, 161.46)), .Names = c("y", "x1", "x2", > "x3", "x11", "x22", "x33", "x12", "x13", "x23"), row.names = c(NA, > -26L), class = "data.frame") > ) > > x$x11 <- x$x1^2 > x$x22 <- x$x2^2 > x$x33 <- x$x3^2 > x$x12 <- x$x1*x$x2 > x$x13 <- x$x1*x$x3 > x$x23 <- x$x2*x$x3 > > x.lm <- lm(y~x1+x2+x3+x11+x22+x33+x12+x13+x23, data=x) > > anova(lm(y~x1+x2+x3,data=x), x.lm) > > anova(x.lm) > > #I want to test > > #Ho:y~x1+x2+x3 > #Ha:y~x1+x2+x3+x11+x22+x33+x12+x13+x23 > > ((0.00945+0.01340+0.00200+0.00568+0.00489+0.00050)/6)/(0.00371) > > #Thanks > > #Stephen Sefick > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Joshua Wiley Ph.D. Student, Health Psychology Programmer Analyst II, ATS Statistical Consulting Group University of California, Los Angeles https://joshuawiley.com/
Stephen Sefick
2011-Oct-26 19:55 UTC
[R] Extra Sums of Squares from an anova table - why are the values different?
I was referring to the 3rd decimal place and beyond. Thanks that did the trick. I was trying to compare the two to make sure that I knew how to do it by hand. Thanks for all of your help. Stephen On Wed 26 Oct 2011 02:23:02 PM CDT, Joshua Wiley wrote:> > Hi Stephen, > > Thanks for the disclosure. If you are referring to the difference in > the third decimal place between your calculated F value and what R > gives, yes, it is due to rounding. Try this: > > ## extract the mean squares from anova() and store in msq > msq<- anova(x.lm)[, "Mean Sq"] > > mean(msq[4:9])/msq[10] > > Cheers, > > Josh > > On Wed, Oct 26, 2011 at 11:19 AM, Stephen Sefick<ssefick at gmail.com> wrote: >> >> #For full disclosure- I am working on a homework problem. However, my >> question revolves around computer rounding, I think. >> >> >> x<- (structure(list(y = c(0.222, 0.395, 0.422, 0.437, 0.428, 0.467, >> 0.444, 0.378, 0.494, 0.456, 0.452, 0.112, 0.432, 0.101, 0.232, >> 0.306, 0.0923, 0.116, 0.0764, 0.439, 0.0944, 0.117, 0.0726, 0.0412, >> 0.251, 2e-05), x1 = c(7.3, 8.7, 8.8, 8.1, 9, 8.7, 9.3, 7.6, 10, >> 8.4, 9.3, 7.7, 9.8, 7.3, 8.5, 9.5, 7.4, 7.8, 7.7, 10.3, 7.8, >> 7.1, 7.7, 7.4, 7.3, 7.6), x2 = c(0, 0, 0.7, 4, 0.5, 1.5, 2.1, >> 5.1, 0, 3.7, 3.6, 2.8, 4.2, 2.5, 2, 2.5, 2.8, 2.8, 3, 1.7, 3.3, >> 3.9, 4.3, 6, 2, 7.8), x3 = c(0, 0.3, 1, 0.2, 1, 2.8, 1, 3.4, >> 0.3, 4.1, 2, 7.1, 2, 6.8, 6.6, 5, 7.8, 7.7, 8, 4.2, 8.5, 6.6, >> 9.5, 10.9, 5.2, 20.7), x11 = c(53.29, 75.69, 77.44, 65.61, 81, >> 75.69, 86.49, 57.76, 100, 70.56, 86.49, 59.29, 96.04, 53.29, >> 72.25, 90.25, 54.76, 60.84, 59.29, 106.09, 60.84, 50.41, 59.29, >> 54.76, 53.29, 57.76), x22 = c(0, 0, 0.49, 16, 0.25, 2.25, 4.41, >> 26.01, 0, 13.69, 12.96, 7.84, 17.64, 6.25, 4, 6.25, 7.84, 7.84, >> 9, 2.89, 10.89, 15.21, 18.49, 36, 4, 60.84), x33 = c(0, 0.09, >> 1, 0.04, 1, 7.84, 1, 11.56, 0.09, 16.81, 4, 50.41, 4, 46.24, >> 43.56, 25, 60.84, 59.29, 64, 17.64, 72.25, 43.56, 90.25, 118.81, >> 27.04, 428.49), x12 = c(0, 0, 6.16, 32.4, 4.5, 13.05, 19.53, >> 38.76, 0, 31.08, 33.48, 21.56, 41.16, 18.25, 17, 23.75, 20.72, >> 21.84, 23.1, 17.51, 25.74, 27.69, 33.11, 44.4, 14.6, 59.28), >> x13 = c(0, 2.61, 8.8, 1.62, 9, 24.36, 9.3, 25.84, 3, 34.44, >> 18.6, 54.67, 19.6, 49.64, 56.1, 47.5, 57.72, 60.06, 61.6, >> 43.26, 66.3, 46.86, 73.15, 80.66, 37.96, 157.32), x23 = c(0, >> 0, 0.7, 0.8, 0.5, 4.2, 2.1, 17.34, 0, 15.17, 7.2, 19.88, >> 8.4, 17, 13.2, 12.5, 21.84, 21.56, 24, 7.14, 28.05, 25.74, >> 40.85, 65.4, 10.4, 161.46)), .Names = c("y", "x1", "x2", >> "x3", "x11", "x22", "x33", "x12", "x13", "x23"), row.names = c(NA, >> -26L), class = "data.frame") >> ) >> >> x$x11<- x$x1^2 >> x$x22<- x$x2^2 >> x$x33<- x$x3^2 >> x$x12<- x$x1*x$x2 >> x$x13<- x$x1*x$x3 >> x$x23<- x$x2*x$x3 >> >> x.lm<- lm(y~x1+x2+x3+x11+x22+x33+x12+x13+x23, data=x) >> >> anova(lm(y~x1+x2+x3,data=x), x.lm) >> >> anova(x.lm) >> >> #I want to test >> >> #Ho:y~x1+x2+x3 >> #Ha:y~x1+x2+x3+x11+x22+x33+x12+x13+x23 >> >> ((0.00945+0.01340+0.00200+0.00568+0.00489+0.00050)/6)/(0.00371) >> >> #Thanks >> >> #Stephen Sefick >> >> ______________________________________________ >> R-help at r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >> http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. >> > > > >