if( !require('investr') ){ install.packages('investr', dependencies=TRUE, repos='http://cran.rstudio.com/') } library(investr) # has the function plotFit load(file='../../BookCode/nlrwr/data/vapCO.rda') plot(vapCO$T, log(vapCO$p), xlab='Temperature (K)', ylab='log(Pressure (Pa))') grid() vapCO.m1 = nls(log(p) ~ A - B/T, data=vapCO, start=list(A=10, B=100)) print(summary(vapCO.m1)) # Now that we have a model, lets study the fitting assumptions following the steps discussed in this chapter of the book: # plotFit(vapCO.m1, main='vapCO data and fit') grid() # Residual plot: # plot(fitted(vapCO.m1), residuals(vapCO.m1), xlab='fitted values', ylab='residuals') abline(h=0, col='black') grid() # F-test: # n = dim(vapCO)[1] nc = length(unique(vapCO$T)) if( nc < n ){ # we must have repeated measurements print('F-test') full_model = lm(log(p) ~ as.factor(T), data=vapCO) print(anova(vapCO.m1, full_model)) } # Variance homogeneity: # plot(fitted(vapCO.m1), abs(residuals(vapCO.m1)), xlab='fitted values', ylab='abs residuals') grid() # Normality of the residuals: # standardRes = residuals(vapCO.m1)/summary(vapCO.m1)$sigma qqnorm(standardRes, main='') abline(a=0, b=1) grid() print(shapiro.test(standardRes)) # Independence: # #plot(residuals(vapCO.m1), c(residuals(vapCO.m1)[-1], NA), xlab='residuals', ylab='lagged residuals') #grid() acf(residuals(vapCO.m1))