El dom., 23 de jun. de 2019 a la(s) 03:00, Roger Bivand (roger.biv...@nhh.no) escribió:
> Comments inline below: > > On Sun, 23 Jun 2019, Rolando Valdez wrote: > > > I apologize for the lack of clarity. > > > > Let me try again: > > > > The SWM captures the spatial structure among territories. In the case of > a > > matrix based on distance, you define a distance-threshold, say 50 km, and > > every territory under that distance is considered as neighbor, in the > > matrix, those territories considered neighbors take the value 1, and 0 > > otherwise (territories beyond 50 km). This is what 'dnearneigh' function > > does. > > > > Then, I want to define a distance-threshold, say 50 km by road (not > > euclidean) and every territory under that distance (by road) be > considered > > as neighbor. > > > So the main goal is to use distance by road between territories to > construct a neighbour object, with a maximum distance threshold. > Yes, just like that. > > Firstly, why do you suppose that this will represent your a priori > knowledge better than contiguity, which is the most obvious measure of > neighbourhood for data with areal support? > I'm running the same specification with 8 distance-threshold to assess the impact of the distance on a key dependent variable. > > If there are major mountain chains or water bodies impeding contact across > a boundary between contiguous territories, could you not just edit out > those graph edges (spdep::edit.nb() for example)? If there are many, a > programmatic approach may be needed. > Yes, there are many cases like this you mentioned. > > The inherent difficulty is that distances to territories in practice mean > that you have to change support from area to point, and that needs > thinking through. A territory centroid may, for example, not lie on a > transport link. If you have finer scale population or production data, you > might use weighted centroids, but this involves further steps, and using > this kind of data may add endogeneity, as the variables used to define the > neighbour object may enter your model elsewhere. > I have redefine the shapefile to urban areas, these polygons are smaller than counties, thus, their centroids would lie on the roads more confidently. I am not using variables to define the neighbor object. > > So: > > I) explain why you cannot simply use contiguities (using accessibility as > a covariate if important); > Because the distance is an explanatory component itself. > > II) if some contiguities given territory boundaries should be removed > because there are good reasons (mountain range, ...) for no contact, > provide a reproducible example so that you can be assisted in programming > the criteria for thinning the contiguity graph; and > > III) if you really want to go with road distances, provide a reproducible > example for first finding the representative point for each territory and > then giving the road network and territory boundaries. With the linear > network and the change-of-support points, it is not unlikely that the > spatstat linnet route will be easiest to implement. I have used raster > cost distances in GRASS for things like this (see the Snow example in ch. > 4 in ASDAR); gdistance is slower in that setting. > I've seen the example you suggest, I cannot figure out how to fit to my case . > > Hope this helps, > > Roger > > PS. It would be really helpful to use affiliations, as gmail addresses > tell us nothing about what might be expected of background knowledge. This > posting feels like someone looking for a response to a reviewer of an > article submitted to a journal, where the reviewer has little idea of the > underlying challenges involved in making such a revision. Not knowing > this, and the lack of a reproducible example leaves helpers pretty much in > the dark. Using existing or toy data sets lets you post without showing > too much of the detail in your specific problem, but in this thread there > has been too little information for reasonable traction. > You are absolutely right. I am trying to follow a suggestion from a referee, who suggests to switch from the euclidean distance to a road distance. This is the reason I posted my doubt, I had no clue even where to start. Now, I have task to do. Thanks a lot for your help. > > > > El sáb., 22 de jun. de 2019 a la(s) 21:15, Rolf Turner ( > > r.tur...@auckland.ac.nz) escribió: > > > >> On 23/06/19 3:30 PM, Rolando Valdez wrote: > >>> Sorry again. > >>> > >>> A Spatial Weight Matrix (swm) is an object used in spatial econometrics > >>> to characterize the spatial structure among territories. It is an > >>> element nxn where n is the number of territorial units (counties, > >>> districts, states, cities, regions) in the sample and it could be based > >>> on contiguity or distance. Usually, you can create a swm based on > >>> distance using 'dnearneigh' from spdep and then convert to a listw > >>> through 'nb2listw'. The problem is that the matrix that you generate > >>> trough 'dnearneigh'computes the euclidean distance among centroids of > >>> polygons. This is where I spot my issue, I need to compute the swm > using > >>> the road distance instead of euclidean distance computed through > >>> 'dnearneigh'. I do have a shapefile with poligons (counties) and > another > >>> shapefile with lines (roads). > >> > >> OK. It's getting a *bit* clearer .... You are interested in "road > >> distances" between counties. I'm still not entirely sure what this > >> means. Is it the *minimum* distance by road from one county to another? > >> In which case, if two counties are contiguous (adjacent) and there is a > >> road crossing the border between the two, is the distance between the > >> counties equal to zero? (This doesn't seem like it would be > >> satisfactory ....) > >> > >> Yes, actually it is possible that two counties were connected by more > than > > one road, however it's not a big deal. If I define a distance of 50 km, > it > > doesn't matter how many times two counties are connected, I just need > that > > they are at 50 km trough, at least, one road. > > > >> If this is not the case, then what *is* the case? Perhaps you want > >> distances between the *centroids* of the counties. What then do you > >> mean by road distance when the centroids do not lie on a road? > >> > > > > This is a big challenge, I'm still working on it. > > > >> > >> You apparently need to deal with counties in which there are no roads at > >> all. To handle this you have to define what *you* mean by the distance > >> by road from county A to county B when there are no roads at all in > >> county B. Perhaps infinity would be the appropriate distance, but *I* > >> don't know; you have to make the call. > >> > > > > If two counties are not connected through a road, they could not be > > neighbors. In this case, it would correspond to a value 0 in the matrix. > > > >> > >> Previously you indicated that you needed to know (pairwise) road > >> distances between specified points in a given set, and I showed you how > >> to obtain those using pairdist(), from spatstat. Now it seems that you > >> want something rather different, and it's still not clear what. > >> > >> In a sense is the same, but you said so properly, We have different > > research fields. > > > > > >> You need to get *your* thoughts clear; make some definitions and > >> specifications, and decide what you really want or need. > >> > > > > I got it. > > > >> > >> It seems that you are expecting R to magically do your thinking for you; > >> it won't! > >> > >> No, I'm not expecting that. > > > >> cheers, > >> > >> Rolf > >> > >>> El sáb., 22 de jun. de 2019 a la(s) 20:00, Rolf Turner > >>> (r.tur...@auckland.ac.nz <mailto:r.tur...@auckland.ac.nz>) escribió: > >>> > >>> > >>> On 23/06/19 2:38 PM, Rolando Valdez wrote: > >>> > >>> > I am sorry, I was not clear enough. My goal is to calculate a > >>> spatial > >>> > weight matrix (nxn) across counties but, instead of euclidean > >>> distance, > >>> > to use road distance. > >>> > >>> I'm afraid I still don't understand. To put it mildly. You > >> presumably > >>> have a clear idea of what you are trying to, but those of us who > are > >>> not > >>> involved in your research have no such idea. We (or at least I) > >>> haven't > >>> a clue as to what you are talking about. > >>> > >>> What do you mean by "spatial weight"? What are these weights used > >> for? > >>> What is n? How are the counties involved? Is n the number of > >>> counties? > >>> Are you interested in the road distance (minimum road distance?) > >>> between > >>> pairs of counties? > >>> > >>> Please explain *clearly* and do not expect those who are trying to > >> help > >>> you to be mind-readers!!! > >>> > >>> cheers, > >>> > >>> Rolf > >>> > >>> > > >>> > El sáb., 22 de jun. de 2019 a la(s) 19:28, Rolf Turner > >>> > (r.tur...@auckland.ac.nz <mailto:r.tur...@auckland.ac.nz> > >>> <mailto:r.tur...@auckland.ac.nz <mailto:r.tur...@auckland.ac.nz>>) > >>> escribió: > >>> > > >>> > > >>> > On 23/06/19 1:17 PM, Rolando Valdez wrote: > >>> > > >>> > > Thank you for your answer. > >>> > > > >>> > > I have a shapefile with, say, counties, and I got another > >>> > shapefile with > >>> > > the roads. ¿What if a county does not intersect any road? > >>> > > >>> > I am sorry, but it is not at all clear to me just what the > >>> problem is. > >>> > How do the counties come into the picture? You said you > >>> wanted to get > >>> > the road distance between points on the roads. What have the > >>> counties > >>> > got to do with this? > >>> > > >>> > Can you perhaps provide a reproducible example? > >>> > > >>> > cheers, > >>> > > >>> > Rolf > >>> > > >>> > > > >>> > > El jue., 20 de jun. de 2019 a la(s) 19:08, Rolf Turner > >>> > > (r.tur...@auckland.ac.nz <mailto:r.tur...@auckland.ac.nz> > >>> <mailto:r.tur...@auckland.ac.nz <mailto:r.tur...@auckland.ac.nz>> > >>> > <mailto:r.tur...@auckland.ac.nz > >>> <mailto:r.tur...@auckland.ac.nz> <mailto:r.tur...@auckland.ac.nz > >>> <mailto:r.tur...@auckland.ac.nz>>>) > >>> > escribió: > >>> > > > >>> > > > >>> > > On 21/06/19 12:26 PM, Rolando Valdez wrote: > >>> > > > >>> > > > Dear community, > >>> > > > > >>> > > > Is there any way to create a spatial weight matrix > >>> based > >>> > on road > >>> > > distance? > >>> > > > I am trying to use the road distance between two > >> points > >>> > instead of > >>> > > > euclidean distance. > >>> > > > > >>> > > > I've seen that there is a package named osrm. Can > >>> anyone give > >>> > > some advice? > >>> > > > >>> > > I don't know anything about "osrm". Calculating "road > >>> distances" > >>> > > can be > >>> > > done in the spatstat package reasonably easily, if you > >>> take > >>> > the trouble > >>> > > to represent your collection of roads as a "linnet" > >>> object. > >>> > > > >>> > > Given that you have done so, suppose that your linnet > >>> object > >>> > is "L" and > >>> > > that you have vectors "x" and "y" specifying the > >>> points on L > >>> > (i.e. on > >>> > > your roads) between which you want to know the > >> distances. > >>> > > > >>> > > Do: > >>> > > > >>> > > X <- lpp(data.frame(x=x,y=y),L) > >>> > > dMat <- pairdist(X) > >>> > > > >>> > > The object "dMat" is a (symmetric) square matrix; > >>> dMat[i,j] > >>> > is the > >>> > > distance between point i and point j. (Of course the > >>> > diagonal entries > >>> > > are all 0.) > >>> > > > >>> > > If your collection of roads is specified by means of a > >>> shapefile, > >>> > > vignette("shapefiles") will tell you how to turn this > >>> > collection into a > >>> > > "psp" ("planar segment pattern") object; the function > >>> (method) > >>> > > as.linnet.psp() can then be used to turn the "psp" > >>> object into a > >>> > > "linnet" object. > >>> > > > >>> > > HTH > >> > > > > > > > > -- > Roger Bivand > Department of Economics, Norwegian School of Economics, > Helleveien 30, N-5045 Bergen, Norway. > voice: +47 55 95 93 55; e-mail: roger.biv...@nhh.no > https://orcid.org/0000-0003-2392-6140 > https://scholar.google.no/citations?user=AWeghB0AAAAJ&hl=en -- Rol~ [[alternative HTML version deleted]] _______________________________________________ R-sig-Geo mailing list R-sig-Geo@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo