I'm trying to solve a homework problem using R. The problem gives a list of cricket chirps per second and corresponding temperature, and asks to give the equation for the linear model and then predict the temperature to produce 18 chirps per second. So far, I have:
> # Homework 11.2.1 and 11.3.3 > chirps <- scan() 1: 20 2: 16 3: 19.8 4: 18.4 5: 17.1 6: 15.5 7: 14.7 8: 17.1 9: 15.4 10: 16.2 11: 15 12: 17.2 13: 16 14: 17 15: 14.4 16: Read 15 items > temp <- scan() 1: 88.6 2: 71.6 3: 93.3 4: 84.3 5: 80.6 6: 75.2 7: 69.7 8: 82 9: 69.4 10: 83.3 11: 79.6 12: 82.5 13: 80.6 14: 83.5 15: 76.3 16: Read 15 items > chirps [1] 20.0 16.0 19.8 18.4 17.1 15.5 14.7 17.1 15.4 16.2 15.0 17.2 16.0 17.0 14.4 > temp [1] 88.6 71.6 93.3 84.3 80.6 75.2 69.7 82.0 69.4 83.3 79.6 82.5 80.6 83.5 76.3 > chirps.res <- lm(chirps ~ temp) > summary(chirps.res) Call: lm(formula = chirps ~ temp) Residuals: Min 1Q Median 3Q Max -1.56146 -0.58088 0.02972 0.58807 1.53047 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -0.31433 3.10963 -0.101 0.921028 temp 0.21201 0.03873 5.474 0.000107 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 0.9715 on 13 degrees of freedom Multiple R-Squared: 0.6975, Adjusted R-squared: 0.6742 F-statistic: 29.97 on 1 and 13 DF, p-value: 0.0001067 > # From the linear model summary output above, the equation for the least squares line is: > # y = -0.3143 + 0.2120*x or chirps = -0.3143 + 0.2120*temp > I can then determine the answer to the prediction, using algebra and R: > pred_temp <- (18+0.3143)/0.2120 > pred_temp [1] 86.3882 However, I'd like to try to use the predict() function. Since 'chirps' and 'temp' are just vectors of numbers, and not dataframes, these failed: predict(chirps.res, newdata=data.frame(chirp=18)) predict(chirps.res, newdata="chirp=18") predict(chirps.res, newdata=18) I then tried to turn my two vectors into a dataframe. I would have bet money that this would have worked, but it didn't: > df <- data.frame(chirps, temp) > chirps.res <- lm(chirps ~ temp, data=df) > predict(chirps.res, newdata=data.frame(chirps=18)) Can anyone tell me how to use predict() in this circumstance? Thanks for your help and advice. -Kevin Kevin Zembower Internet Services Group manager Center for Communication Programs Bloomberg School of Public Health Johns Hopkins University 111 Market Place, Suite 310 Baltimore, Maryland 21202 410-659-6139 ______________________________________________ R-help@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.