{"id":603,"date":"2014-04-21T15:47:17","date_gmt":"2014-04-21T20:47:17","guid":{"rendered":"http:\/\/homepages.uc.edu\/~yaozo\/wordpress\/?p=603"},"modified":"2014-04-21T15:47:17","modified_gmt":"2014-04-21T20:47:17","slug":"geographically-weighted-regression","status":"publish","type":"post","link":"https:\/\/zhuoyao.net\/index.php\/2014\/04\/21\/geographically-weighted-regression\/","title":{"rendered":"Geographically weighted regression"},"content":{"rendered":"<table id=\"container\" style=\"color: #000000;\" border=\"0\">\n<tbody>\n<tr>\n<td>\n<table class=\"box\" style=\"color: #ffffff;\">\n<tbody>\n<tr>\n<td class=\"rightColumn\" valign=\"top\" width=\"750\">\n<table summary=\"page for gwr\" width=\"100%\">\n<tbody>\n<tr>\n<td>wr<\/td>\n<td align=\"right\">R Documentation<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Geographically weighted regression<\/h2>\n<h3>Description<\/h3>\n<p>The function implements the basic geographically weighted regression approach to exploring spatial non-stationarity for given global bandwidth and chosen weighting scheme.<\/p>\n<h3>Usage<\/h3>\n<pre>gwr(formula, data=list(), coords, bandwidth, gweight=gwr.Gauss, \n\tadapt=NULL, hatmatrix = FALSE, fit.points, longlat=NULL, \n\tse.fit=FALSE, weights, cl=NULL, predictions = FALSE, \n        fittedGWRobject = NULL, se.fit.CCT = TRUE, use_snow=FALSE)\n## S3 method for class 'gwr'\nprint(x, ...)\n<\/pre>\n<h3>Arguments<\/h3>\n<table summary=\"R argblock\">\n<tbody>\n<tr valign=\"top\">\n<td><code>formula<\/code><\/td>\n<td>regression model formula as in\u00a0<code>lm<\/code><\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>data<\/code><\/td>\n<td>model data frame, or SpatialPointsDataFrame or SpatialPolygonsDataFrame as defined in package\u00a0<span class=\"pkg\">sp<\/span><\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>coords<\/code><\/td>\n<td>matrix of coordinates of points representing the spatial positions of the observations; may be omitted if the object passed through the data argument is from package\u00a0<span class=\"pkg\">sp<\/span><\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>bandwidth<\/code><\/td>\n<td>bandwidth used in the weighting function, possibly calculated by\u00a0<code>gwr.sel<\/code><\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>gweight<\/code><\/td>\n<td>geographical weighting function, at present\u00a0<code>gwr.Gauss()<\/code>\u00a0default, or\u00a0<code>gwr.gauss()<\/code>, the previous default or<code>gwr.bisquare()<\/code><\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>adapt<\/code><\/td>\n<td>either NULL (default) or a proportion between 0 and 1 of observations to include in weighting scheme (k-nearest neighbours)<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>hatmatrix<\/code><\/td>\n<td>if TRUE, return the hatmatrix as a component of the result, ignored if\u00a0<code>fit.points<\/code>\u00a0given<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>fit.points<\/code><\/td>\n<td>an object containing the coordinates of fit points; often an object from package\u00a0<span class=\"pkg\">sp<\/span>; if missing, the coordinates given through the data argument object, or the coords argument are used<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>longlat<\/code><\/td>\n<td>TRUE if point coordinates are longitude-latitude decimal degrees, in which case distances are measured in kilometers; if x is a SpatialPoints object, the value is taken from the object itself<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>se.fit<\/code><\/td>\n<td>if TRUE, return local coefficient standard errors &#8211; if\u00a0<code>hatmatrix<\/code>\u00a0is TRUE and no fit.points are given, two effective degrees of freedom sigmas will be used to generate alternative coefficient standard errors<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>weights<\/code><\/td>\n<td>case weights used as in weighted least squares, beware of scaling issues, probably unsafe<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>cl<\/code><\/td>\n<td>if NULL, ignored, otherwise\u00a0<code>cl<\/code>\u00a0must be an object describing a \u201ccluster\u201d created using\u00a0<code>makeCluster<\/code>\u00a0in the\u00a0<span class=\"pkg\">parallel<\/span>package. The cluster will then be used to hand off the calculation of local coefficients to cluster nodes, if fit points have been given as an argument, and\u00a0<code>hatmatrix=FALSE<\/code><\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>predictions<\/code><\/td>\n<td>default FALSE; if TRUE and no fit points given, return GW fitted values at data points, if fit points given and are a Spatial*DataFrame object containing the RHS variables in the formula, return GW predictions at the fit points<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>fittedGWRobject<\/code><\/td>\n<td>a fitted\u00a0<code>gwr<\/code>\u00a0object with a hatmatrix (optional), if given, and if fit.points are given and if\u00a0<code>se.fit<\/code>\u00a0is TRUE, two effective degrees of freedom sigmas will be used to generate alternative coefficient standard errors<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>se.fit.CCT<\/code><\/td>\n<td>default TRUE, compute local coefficient standard errors using formula (2.14), p. 55, in the GWR book<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>use_snow<\/code><\/td>\n<td>default FALSE, use\u00a0<span class=\"pkg\">parallel<\/span>; if \u201ccl\u201d is given, and\u00a0<code>use_snow=TRUE<\/code>, use\u00a0<span class=\"pkg\">snow<\/span>\u00a0instead of\u00a0<span class=\"pkg\">parallel<\/span>\u00a0to access more types of cluster<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>x<\/code><\/td>\n<td>an object of class &#8220;gwr&#8221; returned by the\u00a0<code>gwr<\/code>\u00a0function<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>...<\/code><\/td>\n<td>arguments to be passed to other functions<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Details<\/h3>\n<p>The function applies the weighting function in turn to each of the observations, or fit points if given, calculating a weighted regression for each point. The results may be explored to see if coefficient values vary over space. The local coefficient estimates may be made on a multi-node cluster using the\u00a0<code>cl<\/code>\u00a0argument to pass through a\u00a0<span class=\"pkg\">parallel<\/span>\u00a0cluster. The function will then divide the fit points (which must be given separately) between the clusters for fitting. Note that each node will need to have the \u201cspgwr\u201d package present, so initiating by\u00a0<code>clusterEvalQ(cl, library(spgwr))<\/code>\u00a0may save a little time per node. The function clears the global environment on the node of objects sent. Using two nodes reduces timings to a little over half the time for a single node.<\/p>\n<p>The section of the examples code now includes two simulation scenarios, showing how important it is to check that mapped pattern in local coefficients is actually there, rather than being an artefact.<\/p>\n<h3>Value<\/h3>\n<p>A list of class \u201cgwr\u201d:<\/p>\n<table summary=\"R valueblock\">\n<tbody>\n<tr valign=\"top\">\n<td><code>SDF<\/code><\/td>\n<td>a SpatialPointsDataFrame (may be gridded) or SpatialPolygonsDataFrame object (see package &#8220;sp&#8221;) with fit.points, weights, GWR coefficient estimates, R-squared, and coefficient standard errors in its &#8220;data&#8221; slot.<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>lhat<\/code><\/td>\n<td>Leung et al. L matrix<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>lm<\/code><\/td>\n<td>Ordinary least squares global regression on the same model formula, as returned by lm.wfit().<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>bandwidth<\/code><\/td>\n<td>the bandwidth used.<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td><code>this.call<\/code><\/td>\n<td>the function call used.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Author(s)<\/h3>\n<p>Roger Bivand\u00a0<a style=\"color: #708090;\" href=\"mailto:Roger.Bivand@nhh.no\">Roger.Bivand@nhh.no<\/a><\/p>\n<h3>References<\/h3>\n<p>Fotheringham, A.S., Brunsdon, C., and Charlton, M.E., 2002, Geographically Weighted Regression, Chichester: Wiley; Paez A, Farber S, Wheeler D, 2011, &#8220;A simulation-based study of geographically weighted regression as a method for investigating spatially varying relationships&#8221;, Environment and Planning A 43(12) 2992-3010;\u00a0<a style=\"color: #708090;\" href=\"http:\/\/www.nuim.ie\/ncg\/GWR\/index.htm\">http:\/\/www.nuim.ie\/ncg\/GWR\/index.htm<\/a><\/p>\n<h3>See Also<\/h3>\n<p><code>gwr.sel<\/code>,\u00a0<code>gwr.gauss<\/code>,\u00a0<code>gwr.bisquare<\/code><\/p>\n<h3>Examples<\/h3>\n<pre>data(columbus)\ncol.lm &lt;- lm(crime ~ income + housing, data=columbus)\nsummary(col.lm)\ncol.bw &lt;- gwr.sel(crime ~ income + housing, data=columbus,\n  coords=cbind(columbus$x, columbus$y))\ncol.gauss &lt;- gwr(crime ~ income + housing, data=columbus,\n  coords=cbind(columbus$x, columbus$y), bandwidth=col.bw, hatmatrix=TRUE)\ncol.gauss\ncol.d &lt;- gwr.sel(crime ~ income + housing, data=columbus,\n  coords=cbind(columbus$x, columbus$y), gweight=gwr.bisquare)\ncol.bisq &lt;- gwr(crime ~ income + housing, data=columbus,\n  coords=cbind(columbus$x, columbus$y), bandwidth=col.d, \n  gweight=gwr.bisquare, hatmatrix=TRUE)\ncol.bisq\ndata(georgia)\ng.adapt.gauss &lt;- gwr.sel(PctBach ~ TotPop90 + PctRural + PctEld + PctFB + \n PctPov + PctBlack, data=gSRDF, adapt=TRUE)\nres.adpt &lt;- gwr(PctBach ~ TotPop90 + PctRural + PctEld + PctFB + PctPov + \n PctBlack, data=gSRDF, adapt=g.adapt.gauss)\nres.adpt\npairs(as(res.adpt$SDF, \"data.frame\")[,2:8], pch=\".\")\nbrks &lt;- c(-0.25, 0, 0.01, 0.025, 0.075)\ncols &lt;- grey(5:2\/6)\nplot(res.adpt$SDF, col=cols[findInterval(res.adpt$SDF$PctBlack, brks,\n all.inside=TRUE)])\n\n# simulation scenario with patterned dependent variable\nset.seed(1)\nX0 &lt;- runif(nrow(gSRDF)*3)\nX1 &lt;- matrix(sample(X0), ncol=3)\nX1 &lt;- prcomp(X1, center=FALSE, scale.=FALSE)$x\ngSRDF$X1 &lt;- X1[,1]\ngSRDF$X2 &lt;- X1[,2]\ngSRDF$X3 &lt;- X1[,3]\nbw &lt;- gwr.sel(PctBach ~ X1 + X2 + X3, data=gSRDF, verbose=FALSE)\nout &lt;- gwr(PctBach ~ X1 + X2 + X3, data=gSRDF, bandwidth=bw, hatmatrix=TRUE)\nout\nspplot(gSRDF, \"PctBach\", col.regions=grey.colors(20))\nspplot(gSRDF, c(\"X1\", \"X2\", \"X3\"), col.regions=grey.colors(20))\n# pattern in the local coefficients\nspplot(out$SDF, c(\"X1\", \"X2\", \"X3\"), col.regions=grey.colors(20))\n# but no \"significant\" pattern\nspplot(out$SDF, c(\"X1_se\", \"X2_se\", \"X3_se\"), col.regions=grey.colors(20))\nout$SDF$X1_t &lt;- out$SDF$X1\/out$SDF$X1_se\nout$SDF$X2_t &lt;- out$SDF$X2\/out$SDF$X2_se\nout$SDF$X3_t &lt;- out$SDF$X3\/out$SDF$X3_se\nspplot(out$SDF, c(\"X1_t\", \"X2_t\", \"X3_t\"), col.regions=grey.colors(20))\n# simulation scenario with random dependent variable\nyrn &lt;- rnorm(nrow(gSRDF))\ngSRDF$yrn &lt;- sample(yrn)\nbw &lt;- gwr.sel(yrn ~ X1 + X2 + X3, data=gSRDF, verbose=FALSE)\n# bandwidth selection maxes out at 620 km, equal to upper bound\n# of line search\nout &lt;- gwr(yrn ~ X1 + X2 + X3, data=gSRDF, bandwidth=bw, hatmatrix=TRUE)\nout\nspplot(gSRDF, \"yrn\", col.regions=grey.colors(20))\nspplot(gSRDF, c(\"X1\", \"X2\", \"X3\"), col.regions=grey.colors(20))\n# pattern in the local coefficients\nspplot(out$SDF, c(\"X1\", \"X2\", \"X3\"), col.regions=grey.colors(20))\n# but no \"significant\" pattern\nspplot(out$SDF, c(\"X1_se\", \"X2_se\", \"X3_se\"), col.regions=grey.colors(20))\nout$SDF$X1_t &lt;- out$SDF$X1\/out$SDF$X1_se\nout$SDF$X2_t &lt;- out$SDF$X2\/out$SDF$X2_se\nout$SDF$X3_t &lt;- out$SDF$X3\/out$SDF$X3_se\nspplot(out$SDF, c(\"X1_t\", \"X2_t\", \"X3_t\"), col.regions=grey.colors(20))\n# end of simulations\n\n\ndata(meuse)\ncoordinates(meuse) &lt;- c(\"x\", \"y\")\nmeuse$ffreq &lt;- factor(meuse$ffreq)\ndata(meuse.grid)\ncoordinates(meuse.grid) &lt;- c(\"x\", \"y\")\nmeuse.grid$ffreq &lt;- factor(meuse.grid$ffreq)\ngridded(meuse.grid) &lt;- TRUE\nxx &lt;- gwr(cadmium ~ dist, meuse, bandwidth = 228, hatmatrix=TRUE)\nxx\nx &lt;- gwr(cadmium ~ dist, meuse, bandwidth = 228, fit.points = meuse.grid,\n predict=TRUE, se.fit=TRUE, fittedGWRobject=xx)\nx\nspplot(x$SDF, \"pred\")\nspplot(x$SDF, \"pred.se\")\n\n## Not run: \n  g.bw.gauss &lt;- gwr.sel(PctBach ~ TotPop90 + PctRural + PctEld + PctFB +\n    PctPov + PctBlack, data=gSRDF)\n  res.bw &lt;- gwr(PctBach ~ TotPop90 + PctRural + PctEld + PctFB + PctPov +\n    PctBlack, data=gSRDF, bandwidth=g.bw.gauss)\n  res.bw\n  pairs(as(res.bw$SDF, \"data.frame\")[,2:8], pch=\".\")\n  plot(res.bw$SDF, col=cols[findInterval(res.bw$SDF$PctBlack, brks,\n    all.inside=TRUE)])\n  g.bw.gauss &lt;- gwr.sel(PctBach ~ TotPop90 + PctRural + PctEld + PctFB +\n    PctPov + PctBlack, data=gSRDF, longlat=TRUE)\n  data(gSRouter)\n  SG &lt;- GE_SpatialGrid(gSRouter, maxPixels = 100)\n  SPxMASK0 &lt;- over(SG$SG, gSRouter)\n  SGDF &lt;- SpatialGridDataFrame(slot(SG$SG, \"grid\"),\n    data=data.frame(SPxMASK0=SPxMASK0),\n    proj4string=CRS(proj4string(gSRouter)))\n  SPxDF &lt;- as(SGDF, \"SpatialPixelsDataFrame\")\n  res.bw &lt;- gwr(PctBach ~ TotPop90 + PctRural + PctEld + PctFB + PctPov +\n    PctBlack, data=gSRDF, bandwidth=g.bw.gauss, fit.points=SPxDF,\n    longlat=TRUE)\n  res.bw\n  res.bw$timings\n  spplot(res.bw$SDF, \"PctBlack\")\n  cl &lt;- makeCluster(detectCores())\n  res.bwc &lt;- gwr(PctBach ~ TotPop90 + PctRural + PctEld + PctFB + PctPov +\n    PctBlack, data=gSRDF, bandwidth=g.bw.gauss, fit.points=SPxDF,\n    longlat=TRUE, cl=cl)\n  res.bwc\n  res.bwc$timings\n  stopCluster(cl)\n\n## End(Not run)\n<\/pre>\n<h3>Results<\/h3>\n<pre>R version 3.0.2 (2013-09-25) -- \"Frisbee Sailing\"\nCopyright (C) 2013 The R Foundation for Statistical Computing\nPlatform: x86_64-unknown-linux-gnu (64-bit)\n\nR is free software and comes with ABSOLUTELY NO WARRANTY.\nYou are welcome to redistribute it under certain conditions.\nType 'license()' or 'licence()' for distribution details.\n\nR is a collaborative project with many contributors.\nType 'contributors()' for more information and\n'citation()' on how to cite R or R packages in publications.\n\nType 'demo()' for some demos, 'help()' for on-line help, or\n'help.start()' for an HTML browser interface to help.\nType 'q()' to quit R.\n\n&gt; library(spgwr)\nLoading required package: sp\nLoading required package: maptools\nLoading required package: foreign\nLoading required package: grid\nLoading required package: lattice\nChecking rgeos availability: TRUE\nNOTE: This package does not constitute approval of GWR\nas a method of spatial analysis; see example(gwr)\n&gt; png(filename=\"\/home\/oogasawa\/snapshot\/RGM3\/R_CC\/result\/spgwr\/gwr.Rd_%03d_medium.png\", width=480, height=480)\n&gt; ### Name: gwr\n&gt; ### Title: Geographically weighted regression\n&gt; ### Aliases: gwr print.gwr\n&gt; ### Keywords: spatial\n&gt; \n&gt; ### ** Examples\n&gt; \n&gt; data(columbus)\n&gt; col.lm &lt;- lm(crime ~ income + housing, data=columbus)\n&gt; summary(col.lm)\n\nCall:\nlm(formula = crime ~ income + housing, data = columbus)\n\nResiduals:\n    Min      1Q  Median      3Q     Max \n-34.418  -6.388  -1.580   9.052  28.649 \n\nCoefficients:\n            Estimate Std. Error t value Pr(&gt;|t|)    \n(Intercept)  68.6189     4.7355  14.490  &lt; 2e-16 ***\nincome       -1.5973     0.3341  -4.780 1.83e-05 ***\nhousing      -0.2739     0.1032  -2.654   0.0109 *  \n---\nSignif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n\nResidual standard error: 11.43 on 46 degrees of freedom\nMultiple R-squared:  0.5524,\tAdjusted R-squared:  0.5329 \nF-statistic: 28.39 on 2 and 46 DF,  p-value: 9.341e-09\n\n&gt; col.bw &lt;- gwr.sel(crime ~ income + housing, data=columbus,\n+   coords=cbind(columbus$x, columbus$y))\nBandwidth: 12.65221 CV score: 7432.171 \nBandwidth: 20.45127 CV score: 7462.669 \nBandwidth: 7.832129 CV score: 7323.494 \nBandwidth: 4.853154 CV score: 7307.484 \nBandwidth: 5.122256 CV score: 7322.64 \nBandwidth: 3.012046 CV score: 6461.665 \nBandwidth: 1.874178 CV score: 6473.183 \nBandwidth: 2.475225 CV score: 6109.765 \nBandwidth: 2.447682 CV score: 6098.241 \nBandwidth: 2.228623 CV score: 6063.971 \nBandwidth: 2.264529 CV score: 6060.644 \nBandwidth: 2.280636 CV score: 6060.52 \nBandwidth: 2.274941 CV score: 6060.473 \nBandwidth: 2.275073 CV score: 6060.473 \nBandwidth: 2.275032 CV score: 6060.473 \nBandwidth: 2.274991 CV score: 6060.473 \nBandwidth: 2.275032 CV score: 6060.473 \n&gt; col.gauss &lt;- gwr(crime ~ income + housing, data=columbus,\n+   coords=cbind(columbus$x, columbus$y), bandwidth=col.bw, hatmatrix=TRUE)\n&gt; col.gauss\nCall:\ngwr(formula = crime ~ income + housing, data = columbus, coords = cbind(columbus$x, \n    columbus$y), bandwidth = col.bw, hatmatrix = TRUE)\nKernel function: gwr.Gauss \nFixed bandwidth: 2.275032 \nSummary of GWR coefficient estimates:\n                 Min.  1st Qu.   Median  3rd Qu.     Max.  Global\nX.Intercept. 23.23000 54.13000 63.90000 68.76000 80.90000 68.6189\nincome       -3.13100 -1.91300 -0.98440 -0.36860  1.29100 -1.5973\nhousing      -1.05300 -0.37670 -0.09739  0.03006  0.79460 -0.2739\nNumber of data points: 49 \nEffective number of parameters (residual: 2traceS - traceS'S): 29.61664 \nEffective degrees of freedom (residual: 2traceS - traceS'S): 19.38336 \nSigma (residual: 2traceS - traceS'S): 8.027396 \nEffective number of parameters (model: traceS): 23.92826 \nEffective degrees of freedom (model: traceS): 25.07174 \nSigma (model: traceS): 7.058251 \nSigma (ML): 5.048836 \nAICc (GWR p. 61, eq 2.33; p. 96, eq. 4.21): 403.6193 \nAIC (GWR p. 96, eq. 4.22): 321.6617 \nResidual sum of squares: 1249.046 \nQuasi-global R2: 0.9070521 \n&gt; col.d &lt;- gwr.sel(crime ~ income + housing, data=columbus,\n+   coords=cbind(columbus$x, columbus$y), gweight=gwr.bisquare)\nBandwidth: 12.65221 CV score: 8180.49 \nBandwidth: 20.45127 CV score: 7552.802 \nBandwidth: 25.27135 CV score: 7508.191 \nBandwidth: 23.68116 CV score: 7519.828 \nBandwidth: 28.25033 CV score: 7491.815 \nBandwidth: 30.09144 CV score: 7486.638 \nBandwidth: 31.69367 CV score: 7483.628 \nBandwidth: 31.08167 CV score: 7484.671 \nBandwidth: 32.21954 CV score: 7482.811 \nBandwidth: 32.54454 CV score: 7482.336 \nBandwidth: 32.74541 CV score: 7482.053 \nBandwidth: 32.86955 CV score: 7481.881 \nBandwidth: 32.94627 CV score: 7481.777 \nBandwidth: 32.99369 CV score: 7481.712 \nBandwidth: 33.023 CV score: 7481.673 \nBandwidth: 33.04111 CV score: 7481.649 \nBandwidth: 33.0523 CV score: 7481.634 \nBandwidth: 33.05922 CV score: 7481.624 \nBandwidth: 33.06349 CV score: 7481.619 \nBandwidth: 33.06614 CV score: 7481.615 \nBandwidth: 33.06777 CV score: 7481.613 \nBandwidth: 33.06878 CV score: 7481.612 \nBandwidth: 33.0694 CV score: 7481.611 \nBandwidth: 33.06979 CV score: 7481.61 \nBandwidth: 33.07003 CV score: 7481.61 \nBandwidth: 33.07017 CV score: 7481.61 \nBandwidth: 33.07027 CV score: 7481.61 \nBandwidth: 33.07032 CV score: 7481.609 \nBandwidth: 33.07036 CV score: 7481.609 \nBandwidth: 33.07036 CV score: 7481.609 \nWarning message:\nIn gwr.sel(crime ~ income + housing, data = columbus, coords = cbind(columbus$x,  :\n  Bandwidth converged to upper bound:33.0704127582345\n&gt; col.bisq &lt;- gwr(crime ~ income + housing, data=columbus,\n+   coords=cbind(columbus$x, columbus$y), bandwidth=col.d, \n+   gweight=gwr.bisquare, hatmatrix=TRUE)\n&gt; col.bisq\nCall:\ngwr(formula = crime ~ income + housing, data = columbus, coords = cbind(columbus$x, \n    columbus$y), bandwidth = col.d, gweight = gwr.bisquare, hatmatrix = TRUE)\nKernel function: gwr.bisquare \nFixed bandwidth: 33.07036 \nSummary of GWR coefficient estimates:\n                Min. 1st Qu.  Median 3rd Qu.    Max.  Global\nX.Intercept. 68.3100 68.9600 69.2600 69.5700 71.6400 68.6189\nincome       -1.7270 -1.6480 -1.6140 -1.5690 -1.4680 -1.5973\nhousing      -0.3331 -0.3052 -0.2806 -0.2535 -0.1883 -0.2739\nNumber of data points: 49 \nEffective number of parameters (residual: 2traceS - traceS'S): 4.604881 \nEffective degrees of freedom (residual: 2traceS - traceS'S): 44.39512 \nSigma (residual: 2traceS - traceS'S): 11.37646 \nEffective number of parameters (model: traceS): 3.917653 \nEffective degrees of freedom (model: traceS): 45.08235 \nSigma (model: traceS): 11.28942 \nSigma (ML): 10.82871 \nAICc (GWR p. 61, eq 2.33; p. 96, eq. 4.21): 383.698 \nAIC (GWR p. 96, eq. 4.22): 376.4294 \nResidual sum of squares: 5745.791 \nQuasi-global R2: 0.5724264 \n&gt; data(georgia)\n&gt; g.adapt.gauss &lt;- gwr.sel(PctBach ~ TotPop90 + PctRural + PctEld + PctFB + \n+  PctPov + PctBlack, data=gSRDF, adapt=TRUE)\nAdaptive q: 0.381966 CV score: 2048.736 \nAdaptive q: 0.618034 CV score: 2028.616 \nAdaptive q: 0.763932 CV score: 2041.588 \nAdaptive q: 0.5934745 CV score: 2027.578 \nAdaptive q: 0.5284474 CV score: 2026.646 \nAdaptive q: 0.537984 CV score: 2026.588 \nAdaptive q: 0.5414424 CV score: 2026.575 \nAdaptive q: 0.5613169 CV score: 2026.795 \nAdaptive q: 0.5507625 CV score: 2026.522 \nAdaptive q: 0.5547939 CV score: 2026.587 \nAdaptive q: 0.5478453 CV score: 2026.5 \nAdaptive q: 0.5474828 CV score: 2026.5 \nAdaptive q: 0.5474097 CV score: 2026.5 \nAdaptive q: 0.547369 CV score: 2026.5 \nAdaptive q: 0.5474097 CV score: 2026.5 \n&gt; res.adpt &lt;- gwr(PctBach ~ TotPop90 + PctRural + PctEld + PctFB + PctPov + \n+  PctBlack, data=gSRDF, adapt=g.adapt.gauss)\n&gt; res.adpt\nCall:\ngwr(formula = PctBach ~ TotPop90 + PctRural + PctEld + PctFB + \n    PctPov + PctBlack, data = gSRDF, adapt = g.adapt.gauss)\nKernel function: gwr.Gauss \nAdaptive quantile: 0.5474097 (about 87 of 159)\nSummary of GWR coefficient estimates:\n                   Min.    1st Qu.     Median    3rd Qu.       Max.  Global\nX.Intercept.  1.358e+01  1.409e+01  1.522e+01  1.570e+01  1.597e+01 14.7766\nTotPop90      1.870e-05  2.053e-05  2.279e-05  2.482e-05  2.586e-05  0.0000\nPctRural     -5.253e-02 -4.829e-02 -4.191e-02 -3.600e-02 -3.206e-02 -0.0439\nPctEld       -1.586e-01 -1.335e-01 -1.146e-01 -9.678e-02 -5.908e-02 -0.0619\nPctFB         8.164e-01  9.940e-01  1.354e+00  1.742e+00  1.958e+00  1.2562\nPctPov       -1.838e-01 -1.643e-01 -1.256e-01 -9.503e-02 -6.538e-02 -0.1554\nPctBlack     -1.194e-02 -1.639e-04  1.160e-02  2.760e-02  3.895e-02  0.0219\n&gt; pairs(as(res.adpt$SDF, \"data.frame\")[,2:8], pch=\".\")\n&gt; brks &lt;- c(-0.25, 0, 0.01, 0.025, 0.075)\n&gt; cols &lt;- grey(5:2\/6)\n&gt; plot(res.adpt$SDF, col=cols[findInterval(res.adpt$SDF$PctBlack, brks,\n+  all.inside=TRUE)])\n&gt; ## No test: \n&gt; # simulation scenario with patterned dependent variable\n&gt; set.seed(1)\n&gt; X0 &lt;- runif(nrow(gSRDF)*3)\n&gt; X1 &lt;- matrix(sample(X0), ncol=3)\n&gt; X1 &lt;- prcomp(X1, center=FALSE, scale.=FALSE)$x\n&gt; gSRDF$X1 &lt;- X1[,1]\n&gt; gSRDF$X2 &lt;- X1[,2]\n&gt; gSRDF$X3 &lt;- X1[,3]\n&gt; bw &lt;- gwr.sel(PctBach ~ X1 + X2 + X3, data=gSRDF, verbose=FALSE)\n&gt; out &lt;- gwr(PctBach ~ X1 + X2 + X3, data=gSRDF, bandwidth=bw, hatmatrix=TRUE)\n&gt; out\nCall:\ngwr(formula = PctBach ~ X1 + X2 + X3, data = gSRDF, bandwidth = bw, \n    hatmatrix = TRUE)\nKernel function: gwr.Gauss \nFixed bandwidth: 110.5668 \nSummary of GWR coefficient estimates:\n                Min. 1st Qu.  Median 3rd Qu.    Max.  Global\nX.Intercept.  9.6300 11.3700 12.1300 12.4600 16.5800 11.9185\nX1           -3.0180 -0.9243  0.7687  2.9440  8.0570  1.1207\nX2           -1.9000 -0.5299  0.3944  1.2410  2.6240  0.1101\nX3           -1.8910 -1.2040 -0.8930 -0.6000  2.7620 -0.6651\nNumber of data points: 159 \nEffective number of parameters (residual: 2traceS - traceS'S): 18.6728 \nEffective degrees of freedom (residual: 2traceS - traceS'S): 140.3272 \nSigma (residual: 2traceS - traceS'S): 5.61679 \nEffective number of parameters (model: traceS): 13.51085 \nEffective degrees of freedom (model: traceS): 145.4892 \nSigma (model: traceS): 5.516248 \nSigma (ML): 5.276677 \nAICc (GWR p. 61, eq 2.33; p. 96, eq. 4.21): 1012.31 \nAIC (GWR p. 96, eq. 4.22): 993.6616 \nResidual sum of squares: 4427.088 \nQuasi-global R2: 0.1366961 \n&gt; spplot(gSRDF, \"PctBach\", col.regions=grey.colors(20))\n&gt; spplot(gSRDF, c(\"X1\", \"X2\", \"X3\"), col.regions=grey.colors(20))\n&gt; # pattern in the local coefficients\n&gt; spplot(out$SDF, c(\"X1\", \"X2\", \"X3\"), col.regions=grey.colors(20))\n&gt; # but no \"significant\" pattern\n&gt; spplot(out$SDF, c(\"X1_se\", \"X2_se\", \"X3_se\"), col.regions=grey.colors(20))\n&gt; out$SDF$X1_t &lt;- out$SDF$X1\/out$SDF$X1_se\n&gt; out$SDF$X2_t &lt;- out$SDF$X2\/out$SDF$X2_se\n&gt; out$SDF$X3_t &lt;- out$SDF$X3\/out$SDF$X3_se\n&gt; spplot(out$SDF, c(\"X1_t\", \"X2_t\", \"X3_t\"), col.regions=grey.colors(20))\n&gt; # simulation scenario with random dependent variable\n&gt; yrn &lt;- rnorm(nrow(gSRDF))\n&gt; gSRDF$yrn &lt;- sample(yrn)\n&gt; bw &lt;- gwr.sel(yrn ~ X1 + X2 + X3, data=gSRDF, verbose=FALSE)\nWarning message:\nIn gwr.sel(yrn ~ X1 + X2 + X3, data = gSRDF, verbose = FALSE) :\n  Bandwidth converged to upper bound:620.141464185404\n&gt; # bandwidth selection maxes out at 620 km, equal to upper bound\n&gt; # of line search\n&gt; out &lt;- gwr(yrn ~ X1 + X2 + X3, data=gSRDF, bandwidth=bw, hatmatrix=TRUE)\n&gt; out\nCall:\ngwr(formula = yrn ~ X1 + X2 + X3, data = gSRDF, bandwidth = bw, \n    hatmatrix = TRUE)\nKernel function: gwr.Gauss \nFixed bandwidth: 620.1414 \nSummary of GWR coefficient estimates:\n                  Min.   1st Qu.    Median   3rd Qu.      Max.  Global\nX.Intercept. -0.062010 -0.040040 -0.023470 -0.008171  0.011440 -0.0206\nX1           -0.037920 -0.013900  0.001424  0.016200  0.037410  0.0038\nX2           -0.007911 -0.002395  0.002073  0.007433  0.015880  0.0111\nX3           -0.019610  0.001542  0.012040  0.025520  0.050420  0.0087\nNumber of data points: 159 \nEffective number of parameters (residual: 2traceS - traceS'S): 4.54916 \nEffective degrees of freedom (residual: 2traceS - traceS'S): 154.4508 \nSigma (residual: 2traceS - traceS'S): 1.079237 \nEffective number of parameters (model: traceS): 4.281352 \nEffective degrees of freedom (model: traceS): 154.7186 \nSigma (model: traceS): 1.078303 \nSigma (ML): 1.063686 \nAICc (GWR p. 61, eq 2.33; p. 96, eq. 4.21): 481.8531 \nAIC (GWR p. 96, eq. 4.22): 475.1373 \nResidual sum of squares: 179.8971 \nQuasi-global R2: 0.003021284 \n&gt; spplot(gSRDF, \"yrn\", col.regions=grey.colors(20))\n&gt; spplot(gSRDF, c(\"X1\", \"X2\", \"X3\"), col.regions=grey.colors(20))\n&gt; # pattern in the local coefficients\n&gt; spplot(out$SDF, c(\"X1\", \"X2\", \"X3\"), col.regions=grey.colors(20))\n&gt; # but no \"significant\" pattern\n&gt; spplot(out$SDF, c(\"X1_se\", \"X2_se\", \"X3_se\"), col.regions=grey.colors(20))\n&gt; out$SDF$X1_t &lt;- out$SDF$X1\/out$SDF$X1_se\n&gt; out$SDF$X2_t &lt;- out$SDF$X2\/out$SDF$X2_se\n&gt; out$SDF$X3_t &lt;- out$SDF$X3\/out$SDF$X3_se\n&gt; spplot(out$SDF, c(\"X1_t\", \"X2_t\", \"X3_t\"), col.regions=grey.colors(20))\n&gt; # end of simulations\n&gt; ## End(No test)\n&gt; ## No test: \n&gt; data(meuse)\n&gt; coordinates(meuse) &lt;- c(\"x\", \"y\")\n&gt; meuse$ffreq &lt;- factor(meuse$ffreq)\n&gt; data(meuse.grid)\n&gt; coordinates(meuse.grid) &lt;- c(\"x\", \"y\")\n&gt; meuse.grid$ffreq &lt;- factor(meuse.grid$ffreq)\n&gt; gridded(meuse.grid) &lt;- TRUE\n&gt; xx &lt;- gwr(cadmium ~ dist, meuse, bandwidth = 228, hatmatrix=TRUE)\n&gt; xx\nCall:\ngwr(formula = cadmium ~ dist, data = meuse, bandwidth = 228, \n    hatmatrix = TRUE)\nKernel function: gwr.Gauss \nFixed bandwidth: 228 \nSummary of GWR coefficient estimates:\n                Min. 1st Qu.  Median 3rd Qu.    Max.   Global\nX.Intercept.   1.290   3.750   5.646   7.260  12.950   5.8795\ndist         -36.230 -20.570 -12.510  -6.306  12.200 -10.9730\nNumber of data points: 155 \nEffective number of parameters (residual: 2traceS - traceS'S): 33.66762 \nEffective degrees of freedom (residual: 2traceS - traceS'S): 121.3324 \nSigma (residual: 2traceS - traceS'S): 2.172593 \nEffective number of parameters (model: traceS): 25.01465 \nEffective degrees of freedom (model: traceS): 129.9854 \nSigma (model: traceS): 2.099034 \nSigma (ML): 1.92221 \nAICc (GWR p. 61, eq 2.33; p. 96, eq. 4.21): 705.4599 \nAIC (GWR p. 96, eq. 4.22): 667.4631 \nResidual sum of squares: 572.7084 \nQuasi-global R2: 0.7004953 \n&gt; x &lt;- gwr(cadmium ~ dist, meuse, bandwidth = 228, fit.points = meuse.grid,\n+  predict=TRUE, se.fit=TRUE, fittedGWRobject=xx)\n&gt; x\nCall:\ngwr(formula = cadmium ~ dist, data = meuse, bandwidth = 228, \n    fit.points = meuse.grid, se.fit = TRUE, predictions = TRUE, \n    fittedGWRobject = xx)\nKernel function: gwr.Gauss \nFixed bandwidth: 228 \nSummary of GWR coefficient estimates:\n                Min. 1st Qu.  Median 3rd Qu.    Max.   Global\nX.Intercept.   1.267   3.176   4.742   6.763  14.150   5.8795\ndist         -39.280 -16.460  -8.957  -4.693  21.180 -10.9730\n&gt; spplot(x$SDF, \"pred\")\n&gt; spplot(x$SDF, \"pred.se\")\n&gt; ## End(No test)\n&gt; ## Not run: \n&gt; ##D   g.bw.gauss &lt;- gwr.sel(PctBach ~ TotPop90 + PctRural + PctEld + PctFB +\n&gt; ##D     PctPov + PctBlack, data=gSRDF)\n&gt; ##D   res.bw &lt;- gwr(PctBach ~ TotPop90 + PctRural + PctEld + PctFB + PctPov +\n&gt; ##D     PctBlack, data=gSRDF, bandwidth=g.bw.gauss)\n&gt; ##D   res.bw\n&gt; ##D   pairs(as(res.bw$SDF, \"data.frame\")[,2:8], pch=\".\")\n&gt; ##D   plot(res.bw$SDF, col=cols[findInterval(res.bw$SDF$PctBlack, brks,\n&gt; ##D     all.inside=TRUE)])\n&gt; ##D   g.bw.gauss &lt;- gwr.sel(PctBach ~ TotPop90 + PctRural + PctEld + PctFB +\n&gt; ##D     PctPov + PctBlack, data=gSRDF, longlat=TRUE)\n&gt; ##D   data(gSRouter)\n&gt; ##D   SG &lt;- GE_SpatialGrid(gSRouter, maxPixels = 100)\n&gt; ##D   SPxMASK0 &lt;- over(SG$SG, gSRouter)\n&gt; ##D   SGDF &lt;- SpatialGridDataFrame(slot(SG$SG, \"grid\"),\n&gt; ##D     data=data.frame(SPxMASK0=SPxMASK0),\n&gt; ##D     proj4string=CRS(proj4string(gSRouter)))\n&gt; ##D   SPxDF &lt;- as(SGDF, \"SpatialPixelsDataFrame\")\n&gt; ##D   res.bw &lt;- gwr(PctBach ~ TotPop90 + PctRural + PctEld + PctFB + PctPov +\n&gt; ##D     PctBlack, data=gSRDF, bandwidth=g.bw.gauss, fit.points=SPxDF,\n&gt; ##D     longlat=TRUE)\n&gt; ##D   res.bw\n&gt; ##D   res.bw$timings\n&gt; ##D   spplot(res.bw$SDF, \"PctBlack\")\n&gt; ##D   cl &lt;- makeCluster(detectCores())\n&gt; ##D   res.bwc &lt;- gwr(PctBach ~ TotPop90 + PctRural + PctEld + PctFB + PctPov +\n&gt; ##D     PctBlack, data=gSRDF, bandwidth=g.bw.gauss, fit.points=SPxDF,\n&gt; ##D     longlat=TRUE, cl=cl)\n&gt; ##D   res.bwc\n&gt; ##D   res.bwc$timings\n&gt; ##D   stopCluster(cl)\n&gt; ## End(Not run)\n&gt; \n&gt; \n&gt; \n&gt; \n&gt; \n&gt; dev.off()\nnull device \n          1 \n&gt;\n<\/pre>\n<table>\n<tbody>\n<tr>\n<td><a style=\"color: #708090;\" href=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_001_large.png\"><img decoding=\"async\" src=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_001_medium.png\" alt=\"\" \/><\/a><a style=\"color: #708090;\" href=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_002_large.png\"><img decoding=\"async\" src=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_002_medium.png\" alt=\"\" \/><\/a><a style=\"color: #708090;\" href=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_003_large.png\"><img decoding=\"async\" src=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_003_medium.png\" alt=\"\" \/><\/a><a style=\"color: #708090;\" href=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_004_large.png\"><img decoding=\"async\" src=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_004_medium.png\" alt=\"\" \/><\/a><a style=\"color: #708090;\" href=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_005_large.png\"><img decoding=\"async\" src=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_005_medium.png\" alt=\"\" \/><\/a><a style=\"color: #708090;\" href=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_006_large.png\"><img decoding=\"async\" src=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_006_medium.png\" alt=\"\" \/><\/a><a style=\"color: #708090;\" href=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_007_large.png\"><img decoding=\"async\" src=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_007_medium.png\" alt=\"\" \/><\/a><a style=\"color: #708090;\" href=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_008_large.png\"><img decoding=\"async\" src=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_008_medium.png\" alt=\"\" \/><\/a><a style=\"color: #708090;\" href=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_009_large.png\"><img decoding=\"async\" src=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_009_medium.png\" alt=\"\" \/><\/a><a style=\"color: #708090;\" href=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_010_large.png\"><img decoding=\"async\" src=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_010_medium.png\" alt=\"\" \/><\/a><a style=\"color: #708090;\" href=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_011_large.png\"><img decoding=\"async\" src=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_011_medium.png\" alt=\"\" \/><\/a><a style=\"color: #708090;\" href=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_012_large.png\"><img decoding=\"async\" src=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_012_medium.png\" alt=\"\" \/><\/a><a style=\"color: #708090;\" href=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_013_large.png\"><img decoding=\"async\" src=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_013_medium.png\" alt=\"\" \/><\/a><a style=\"color: #708090;\" href=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_014_large.png\"><img decoding=\"async\" src=\"http:\/\/rgm3.lab.nig.ac.jp\/RGM-files\/R_CC\/result\/spgwr\/gwr.Rd_014_medium.png\" alt=\"\" \/><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>wr R Documentation Geographically weighted regression Description The function implements the basic geographically weighted regression approach to exploring spatial non-stationarity for given global bandwidth and&hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[],"class_list":["post-603","post","type-post","status-publish","format-standard","hentry","category-r"],"_links":{"self":[{"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/posts\/603","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/comments?post=603"}],"version-history":[{"count":0,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/posts\/603\/revisions"}],"wp:attachment":[{"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/media?parent=603"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/categories?post=603"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zhuoyao.net\/index.php\/wp-json\/wp\/v2\/tags?post=603"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}