Hello, I'm new here, but will try to be as specific and complete as possible. I'm trying to use âlmâ to first estimate parameter values from a set of calibration measurements, and then later to use those estimates to calculate another set of values with âpredict.lmâ.
First I have a calibration dataset of absorbance values measured from standard solutions with known concentration of Bromide: > stds abs conc 1 -0.0021 0 2 0.1003 200 3 0.2395 500 4 0.3293 800 On this small calibration series, I perform a linear regression to find the parameter estimates of the relationship between absorbance (abs) and concentration (conc): > linear1 <- lm(abs~conc, data=stds) > summary(linear1) Call: lm(formula = abs ~ conc, data = stds) Residuals: 1 2 3 4 -0.012600 0.006467 0.020667 -0.014533 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1.050e-02 1.629e-02 0.645 0.58527 conc 4.167e-04 3.378e-05 12.333 0.00651 ** --- Signif. codes: 0 â***â 0.001 â**â 0.01 â*â 0.05 â.â 0.1 â â 1 Residual standard error: 0.02048 on 2 degrees of freedom Multiple R-squared: 0.987, Adjusted R-squared: 0.9805 F-statistic: 152.1 on 1 and 2 DF, p-value: 0.00651 Now I come with another dataset, which contains measured absorbance values of Bromide in solution: > brom hours abs 1 -1.0 0.0633 2 1.0 0.2686 3 5.0 0.2446 4 18.0 0.2274 5 29.0 0.2091 6 42.0 0.1961 7 53.0 0.1310 8 76.0 0.1504 9 91.0 0.1317 10 95.5 0.1169 11 101.0 0.0977 12 115.0 0.1023 13 123.5 0.0879 14 138.5 0.0724 15 147.5 0.0564 16 163.0 0.0495 17 171.0 0.0325 18 189.0 0.0182 19 211.0 0.0047 20 212.5 NA 21 815.5 -0.2112 22 816.5 -0.1896 23 817.5 -0.0783 24 818.5 0.2963 25 819.5 0.1448 26 839.5 0.0936 27 864.0 0.0560 28 888.0 0.0310 29 960.5 0.0056 30 1009.0 -0.0163 The values in column brom$abs, measured on 30 subsequent points in time need to be calculated to Bromide concentrations, using the previously established relationship âlinear1â. At first, I thought it could be done by: > predict.lm(linear1, brom$abs) Error in eval(predvars, data, env) : numeric 'envir' arg not of length one But, R gives the above error message. Then, after some searching around on different fora and R-communities (including this one), I learned that the ânewdataâ in âpredict.lmâ actually needs to be coerced into a separate dataframe. Thus: > mabs <- data.frame(Abs = brom$abs) > predict.lm(linear1, mabs) Error in eval(expr, envir, enclos) : object 'conc' not found Again, R gives an error...probably because I made an error, but I truly fail to see where. I hope somebody can explain to me clearly what I'm doing wrong and what I should do to instead. Any help is greatly appreciated, thanks ! -- View this message in context: http://r.789695.n4.nabble.com/Help-on-predict-lm-tp4509586p4509586.html Sent from the R help mailing list archive at Nabble.com. [[alternative HTML version deleted]]
______________________________________________ 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.