I would highly recommend not taking ESRI's advice on how to conduct a statistical analysis. The place to start is exploring your data by checking distributional assumptions, testing for outlyers, ect... Part of this exploratory process can be testing for autocorrelation. This can be done by explicitly testing the dependent variable or by fitting a preliminary regression and testing the residuals. If you observe autocorrelation or see structure in your residuals then you can run a test for local autocorrelation (i.e., LISA). If you, in fact, have 2nd order spatial effects then you can make the decision to use GWR. Although, the GWR method is quite suspect and can behave in unexpected ways. If you observe 2nd order effect I would recommend looking into nonparametric or semiparametric methods. ArcGIS does not provide the tools for adequately assessing a linear model. It is essential that you assess regression diagnostics (e.g., residual QQ-plot) to ensure that your model is valid. Beyond cursory exploration of your data statistical analysis should be conducted in a software designed for it. My preference is R but there are many good options with much more shallow learning curves. Here is some example R code to get you started. You will notice that this data is not well behaved. I am not including model fit (e.g., transformations, etc...) in the example code, just how I would start the modeling process. Let me know if you would like code for assessing 2nd order effects (local autocorrelation).
# ADD REQUIRED PACKAGES
require(sp)
require(spdep)
require(car)
require(MASS)
# I AM GOING TO USE AN INTERNAL DATASET SO YOU CAN RUN THE CODE
data(meuse)
str(meuse)
summary(meuse)
#####################################
# DISTRIBUTION PLOT OF y (cadmium) #
#####################################
d <- density(meuse$cadmium)
plot(d, type="n", main="Distribution of Dependent Variable",
xlab="Y", ylab="pdf")
polygon(d, col="blue")
####################################################################
# FIT MULTIPLE LINEAR REGRESSION & ASSUMPTION DIAGNOSTICS #
####################################################################
summary( fit <- lm(cadmium ~ copper+lead+zinc+elev, data=meuse) )
# TYPE II ANOVA OF FIT MODEL
Anova(fit, type="II", test.statistic="Wilks", error.estimate="pearson")
# STANDARD REGRESSION PLOTS
opar <- par(mfrow = c(2,2), oma = c(0, 0, 1.1, 0))
plot(fit, las = 1)
par(opar)
# BONFERONNI P-VALUE FOR EXTREME OBSERVATIONS
outlierTest(fit)
# QQ PLOT OF STUDENTIZED RESIDUALS
qqPlot(fit, pch=19, main="QQ-plot")
# COLINEARITY - MODEL VARIANCE INFLATION FACTORS
vif(fit)
sqrt(vif(fit)) > 2
# COOK'S DISTANCE PLOT - IDENTIFY D > 4/(n-k-1)
cutoff <- 4/((nrow(meuse)-length(fit$coefficients)-2))
plot(fit, which=4, cook.levels=cutoff, main="Cook's Distance")
# INFLUENCE PLOT (ESCAPE OUT)
influencePlot(fit, id.method="identify", main="Influence Plot",
sub="Circle size is proportial to Cook's Distance" )
####################################################################
# TEST FOR GLOBAL AUTOCORRELATION IN DEPENDENT VARIABLE #
####################################################################
# CREATE sp OBJECT FROM X,Y COORDS IN MEUSE DATAFRAME
coordinates(meuse) <- ~x+y
proj4string(meuse) <- CRS("+init=epsg:28992")
# CREATE NEIGHBORS MATRIX (ALL LINKAGES)
nm <- knn2nb(knearneigh(meuse))
all.linked <- max(unlist(nbdists(nm, meuse)))
nb <- dnearneigh(meuse, 0, all.linked)
colW <- nb2listw(nb, style="W")
# PERMUTATION TEST FOR MORAN'S-I
n=999
( Iperm <- moran.mc(meuse@data[,"cadmium"], listw=colW, nsim=n,
alternative="greater") )
mean(Iperm$res[1:nsim])
var(Iperm$res[1:nsim])
plot(Iperm)
###################################################################################
# MORAN'S-I & LAGRANGE DIAGNOSTICS FOR SPATIAL DEPENDENCE IN LINEAR MODELS
#
# Reference:
# Anselin, L., Bera, A.K., Florax, R. and Yoon, M.J. (1996) Simple diagnostic tests
# for spatial dependence. Regional Science and Urban Economics (26)77–104.
###################################################################################
# Moran's-I on regression residuals
lm.morantest(fit, nb2listw(nb, style="W"))
# Lagrange spatial dependence test
lm.LMtests(fit, nb2listw(nb), test=c("LMerr", "LMlag", "RLMerr",
"RLMlag", "SARMA"))
# Lagrange spatial dependence test on residual error
lm.LMtests(residuals(fit), nb2listw(nb))