From andrezehnder at hotmail.com Mon May 18 19:38:26 2015 From: andrezehnder at hotmail.com (=?iso-8859-1?Q?Andr=E9_Zehnder?=) Date: Mon, 18 May 2015 19:38:26 +0200 Subject: [tlocoh-info] auto.a() function suggests much too high a-values Message-ID: Hi all, I am performing a home range analysis with GPS data of some leopards and lions. The input data has a highly variable point density and result in quite large areas (roughly a magnitude of 500 to 1?000 km2 for the 95% isopleth). In agreement with the tutorial, I begin with selecting the value for the temporal parameter s and then select suitable k values. As an orientation for that I use the rule of thumb ( k = sqrt(numberOfPoints)) and the plots. When a k-value has been chosen, the tutorial recommends to use the auto.a() function (lxy.nn.add(toni.lxy, s=0.003, a=auto.a(nnn=15, ptp=0.98))). However, the recommended a-value is massively too high and results in a oversmoothed home range that lacks any details. The higher the s-value, the more severe is this issue. While the result of the suggested a-value still shows a few weak spatial details for s=0, almost circular home ranges result for all isopleths with s>0. I checked whether this issue occurs only for one dataset, but it is the same for all 5 datasets I have checked. I attached two images that present the result when using the recommended a-value (auto_) and one that presents a manually selected a-value (manually_). For example, for s=0.005, I would rather take an a-value between 150?000 and 190?000 than the recommended value of 1?150?000. The auto.a() function should thereby include at least k points for 90% of all hulls. Therefore the question: Has anyone experienced the same issue or is it even a known technical problem with the package? My datasets contain 5?000 to 30?000 fixes, have some gaps and includes sometimes different sampling intervals. May the auto.a() function have severe problems due to that? The choice of an a-value is rather subjective and not really intuitive, especially when s>0. But when the auto.a() function can?t be used to get an approximate reference, what other measures are available to be able to justify your choice of the a-value? PS: I use T-LoCoH version 1.34.00 with RStudio 0.98.1103. Best regards, Andr? Zehnder -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: auto_s0023_a2200000.png Type: image/png Size: 8355 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: manually_s0005_a190000.png Type: image/png Size: 9891 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: auto_s0005_a1150000.png Type: image/png Size: 8257 bytes Desc: not available URL: From lyons.andy at gmail.com Tue May 19 09:27:00 2015 From: lyons.andy at gmail.com (Andy Lyons) Date: Tue, 19 May 2015 00:27:00 -0700 Subject: [tlocoh-info] auto.a() function suggests much too high a-values In-Reply-To: References: Message-ID: <555AE5C4.50204@gmail.com> Hi Andr?, Good questions. Your diagnosis shows that you understand what's going on. You're quite right that selecting a value for 'a' is not intuitive, in part because it represents a cumulative distance of each point to several of its nearest neighbors, and in the case where time is incorporated in the selection of nearest neighbors (s>0), the distance is not a physical distance. The auto.a() function provides a starting point that has proven useful for many datasets, but it really is just that - a starting point to narrow down the range of 'a' values that provide a reasonable balance between over-estimation and under-estimation. The ultimate selection of 'a' should be based on your (admittedly subjective) assessment of minimizing spurious holes in the utilization distribution, and spurious cross-overs. Part of the subjectivity in selecting a parameter value (for any home range estimation method really) involves reflecting upon whether your research question requires better fidelity to the core area or overall 'home range'. In other words, there is no recommended 'a' value. There are only recommended principles for selecting 'a' or 'k' (see appendix I of Lyons et al 2013), along with some tools (plots) to help you select a value. All of which is less convenient to be sure than a one-click solution, but hopefully keeps you close to your data and pushes you to think about what you want from your space use model. As to why the upper and lower ranges returned by the 'auto.a()' function did a poor job for your dataset is hard to say, but it could be related to the geometry of the points or the sampling frequency. Remember that auto.a(ptp = 0.98, nnn = 2) returns the value of 'a' such that 98% of points have at least two nearest neighbors. If the distribution of points is wide ranging, this could result in a large "lower bound" that blows up the core areas. The suggestion to let k = sqrt(numberOfPoints) is likewise a a starting point and not meant to be a recommended value. There is alternative function called lxy.amin.add() to help identify upper and lower bounds for 'a'. But it is more of a convenience function and it operates on similar principles as auto.a(). There is also a relatively new function in tlocoh.dev that opens a GUI (Shinyapp) which is designed to help select parameter values. It isn't documented yet but see some sample code below. Hope this helps. Andy if (!require(tlocoh.dev)) stop("Please install tlocoh.dev") ## Loading required package: tlocoh.dev if (packageVersion("tlocoh.dev") < "1.2.02") stop("Please update your tlocoh.dev package") ## Load suggested packages pkgs <- c("rgdal", "raster", "shiny", "dismo") not.installed <- pkgs[!sapply(pkgs, function(p) require(p, character.only=T))] ## Create a hullset with evenly spaced parameter values (in this case k=4:20, ## (could also be evenly spaced 'a' values, use something like a=seq(from=1000, to=15000, by=1000) raccoon.lhs <- lxy.lhs(raccoon.lxy, s=0.05, k=4:20, iso.add=TRUE, status=FALSE) ## Download a background imagefor display raccoon.gmap <- lhs.gmap(raccoon.lhs, gmap="hybrid") ## Graphically select one of the parameter values by examining the isopleths, EAR plot, and ISO area plot raccoon.sel <- lhs.selection(raccoon.lhs) raccoon.sel <- lhs.shiny.select(raccoon.lhs, selection=raccoon.sel, gmap=raccoon.gmap) ## Apply selection raccoon.lhs <- lhs.select(racoon.lhs, selection=raccoon.sel) On 5/18/2015 10:38 AM, Andr? Zehnder wrote: > > Hi all, > > I am performing a home range analysis with GPS data of some leopards > and lions. The input data has a highly variable point density and > result in quite large areas (roughly a magnitude of 500 to 1?000 km2 > for the 95% isopleth). In agreement with the tutorial, I begin with > selecting the value for the temporal parameter s and then select > suitable k values. As an orientation for that I use the rule of thumb > ( k = sqrt(numberOfPoints)) and the plots. When a k-value has been > chosen, the tutorial recommends to use the auto.a() function > (lxy.nn.add(toni.lxy, s=0.003, a=auto.a(nnn=15, ptp=0.98))). > > However, the recommended a-value is massively too high and results in > a oversmoothed home range that lacks any details. The higher the > s-value, the more severe is this issue. While the result of the > suggested a-value still shows a few weak spatial details for s=0, > almost circular home ranges result for all isopleths with s>0. I > checked whether this issue occurs only for one dataset, but it is the > same for all 5 datasets I have checked. I attached two images that > present the result when using the recommended a-value (auto_) and one > that presents a manually selected a-value (manually_). For example, > for s=0.005, I would rather take an a-value between 150?000 and > 190?000 than the recommended value of 1?150?000. The auto.a() function > should thereby include at least k points for 90% of all hulls. > > Therefore the question: Has anyone experienced the same issue or is it > even a known technical problem with the package? My datasets contain > 5?000 to 30?000 fixes, have some gaps and includes sometimes different > sampling intervals. May the auto.a() function have severe problems due > to that? The choice of an a-value is rather subjective and not really > intuitive, especially when s>0. But when the auto.a() function can?t > be used to get an approximate reference, what other measures are > available to be able to justify your choice of the a-value? > > PS: I use T-LoCoH version 1.34.00 with RStudio 0.98.1103. > > Best regards, > > Andr? Zehnder > > > > _______________________________________________ > Tlocoh-info mailing list > Tlocoh-info at lists.r-forge.r-project.org > http://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/tlocoh-info -------------- next part -------------- An HTML attachment was scrubbed... URL: From andrezehnder at hotmail.com Wed May 20 11:17:09 2015 From: andrezehnder at hotmail.com (=?iso-8859-1?Q?Andr=E9_Zehnder?=) Date: Wed, 20 May 2015 11:17:09 +0200 Subject: [tlocoh-info] auto.a() function suggests much too high a-values In-Reply-To: <555AE5C4.50204@gmail.com> References: <555AE5C4.50204@gmail.com> Message-ID: Hi Andy, Thank you for your quick answer. That would mean that the lxy.nn.add() function works correctly, but does not perform well with my kind of data. I tried out the lxy.amin.add() function you mentioned. I did not find an example of it but I think this is the correct way of calling it: lxy.amin.add(?lxy-data?, s=svalue, nnn=kvalue, ptp=0.90). Although the a-value produced by this function is somewhat lower than the one of lxy.nn.add(), it is still much higher than what I would choose. Unfortunately, the MSHC-method to choose the a-/k-value is not possible since there are no large features that are known to be avoided by the animals in the study area. I will try to look for another criterion that supports a more objective choice of the a-value. If I find anything, I will let you know. Best regards Andr? Zehnder Von: Andy Lyons [mailto:lyons.andy at gmail.com] Gesendet: Dienstag, 19. Mai 2015 09:27 An: Andr? Zehnder Cc: tlocoh-info at lists.r-forge.r-project.org Betreff: Re: [tlocoh-info] auto.a() function suggests much too high a-values Hi Andr?, Good questions. Your diagnosis shows that you understand what's going on. You're quite right that selecting a value for 'a' is not intuitive, in part because it represents a cumulative distance of each point to several of its nearest neighbors, and in the case where time is incorporated in the selection of nearest neighbors (s>0), the distance is not a physical distance. The auto.a() function provides a starting point that has proven useful for many datasets, but it really is just that - a starting point to narrow down the range of 'a' values that provide a reasonable balance between over-estimation and under-estimation. The ultimate selection of 'a' should be based on your (admittedly subjective) assessment of minimizing spurious holes in the utilization distribution, and spurious cross-overs. Part of the subjectivity in selecting a parameter value (for any home range estimation method really) involves reflecting upon whether your research question requires better fidelity to the core area or overall 'home range'. In other words, there is no recommended 'a' value. There are only recommended principles for selecting 'a' or 'k' (see appendix I of Lyons et al 2013), along with some tools (plots) to help you select a value. All of which is less convenient to be sure than a one-click solution, but hopefully keeps you close to your data and pushes you to think about what you want from your space use model. As to why the upper and lower ranges returned by the 'auto.a()' function did a poor job for your dataset is hard to say, but it could be related to the geometry of the points or the sampling frequency. Remember that auto.a(ptp = 0.98, nnn = 2) returns the value of 'a' such that 98% of points have at least two nearest neighbors. If the distribution of points is wide ranging, this could result in a large "lower bound" that blows up the core areas. The suggestion to let k = sqrt(numberOfPoints) is likewise a a starting point and not meant to be a recommended value. There is alternative function called lxy.amin.add() to help identify upper and lower bounds for 'a'. But it is more of a convenience function and it operates on similar principles as auto.a(). There is also a relatively new function in tlocoh.dev that opens a GUI (Shinyapp) which is designed to help select parameter values. It isn't documented yet but see some sample code below. Hope this helps. Andy if (!require(tlocoh.dev)) stop("Please install tlocoh.dev") ## Loading required package: tlocoh.dev if (packageVersion("tlocoh.dev") < "1.2.02") stop("Please update your tlocoh.dev package") ## Load suggested packages pkgs <- c("rgdal", "raster", "shiny", "dismo") not.installed <- pkgs[!sapply(pkgs, function(p) require(p, character.only=T))] ## Create a hullset with evenly spaced parameter values (in this case k=4:20, ## (could also be evenly spaced 'a' values, use something like a=seq(from=1000, to=15000, by=1000) raccoon.lhs <- lxy.lhs(raccoon.lxy, s=0.05, k=4:20, iso.add=TRUE, status=FALSE) ## Download a background image for display raccoon.gmap <- lhs.gmap(raccoon.lhs, gmap="hybrid") ## Graphically select one of the parameter values by examining the isopleths, EAR plot, and ISO area plot raccoon.sel <- lhs.selection(raccoon.lhs) raccoon.sel <- lhs.shiny.select(raccoon.lhs, selection=raccoon.sel, gmap=raccoon.gmap) ## Apply selection raccoon.lhs <- lhs.select(racoon.lhs, selection=raccoon.sel) On 5/18/2015 10:38 AM, Andr? Zehnder wrote: Hi all, I am performing a home range analysis with GPS data of some leopards and lions. The input data has a highly variable point density and result in quite large areas (roughly a magnitude of 500 to 1?000 km2 for the 95% isopleth). In agreement with the tutorial, I begin with selecting the value for the temporal parameter s and then select suitable k values. As an orientation for that I use the rule of thumb ( k = sqrt(numberOfPoints)) and the plots. When a k-value has been chosen, the tutorial recommends to use the auto.a() function (lxy.nn.add(toni.lxy, s=0.003, a=auto.a(nnn=15, ptp=0.98))). However, the recommended a-value is massively too high and results in a oversmoothed home range that lacks any details. The higher the s-value, the more severe is this issue. While the result of the suggested a-value still shows a few weak spatial details for s=0, almost circular home ranges result for all isopleths with s>0. I checked whether this issue occurs only for one dataset, but it is the same for all 5 datasets I have checked. I attached two images that present the result when using the recommended a-value (auto_) and one that presents a manually selected a-value (manually_). For example, for s=0.005, I would rather take an a-value between 150?000 and 190?000 than the recommended value of 1?150?000. The auto.a() function should thereby include at least k points for 90% of all hulls. Therefore the question: Has anyone experienced the same issue or is it even a known technical problem with the package? My datasets contain 5?000 to 30?000 fixes, have some gaps and includes sometimes different sampling intervals. May the auto.a() function have severe problems due to that? The choice of an a-value is rather subjective and not really intuitive, especially when s>0. But when the auto.a() function can?t be used to get an approximate reference, what other measures are available to be able to justify your choice of the a-value? PS: I use T-LoCoH version 1.34.00 with RStudio 0.98.1103. Best regards, Andr? Zehnder _______________________________________________ Tlocoh-info mailing list Tlocoh-info at lists.r-forge.r-project.org http://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/tlocoh-info -------------- next part -------------- An HTML attachment was scrubbed... URL: From lyons.andy at gmail.com Wed May 20 17:28:46 2015 From: lyons.andy at gmail.com (Andy Lyons) Date: Wed, 20 May 2015 08:28:46 -0700 Subject: [tlocoh-info] auto.a() function suggests much too high a-values In-Reply-To: References: <555AE5C4.50204@gmail.com> Message-ID: <555CA82E.2080205@gmail.com> Thanks Andr?. Another way to approach it would be to begin by looking for a lower bound of 'a'. For example the following would compute the smallest 'a' value that results in 50% of the points having only 3 nearest neighbors. toni.lxy <- lxy.amin.add(toni.lxy, s=0.003, ptp = 0.5, nnn = 3) That would almost certainly find an 'a' value that results in many slivers, and a very fragmented 50% isopleth 'core' area. But you could then start cranking it up. If there are no landscape features or behavioral patterns that would allow you to discern an "invalid" cross-over (i.e., a part of the landscape that is included in say the 95% isopleth, but the individual was never observed there), then another strategy could be to focus on the 'core' area (i.e., a 25% or 50% isopleth). If your knowledge of the system and species suggests that there is no reason to think the 'core' area should be highly fragmented, then select the smallest value of 'a' that fills in the spaces in homogeneous habitat, and stop there. The edge-to-area ratio plot of the lower isopleths may help here. Also note there's a 'kmin' argument in lxy.lhs that can be used to 'force' all points to be part of a hull. So if for example you find a value of a=10000 does a 'good' job in delineating the 50% isopleth, but there are some important outlying points that are too far apart to have at least two neighbors within a cumulative distance of 10,000, you could pass kmin=2 (or 3, or 4) so that even those outlying points would be in hulls (even if only triangles) and thus included in the 100% isopleth. Good luck and yes please let us know if you find a more objective criteria for choice of the a-value. I suspect there will never be a one-size-fits-all rule that can be applied to all datasets, but there are probably rules that are more specified than the generic principles laid out in our 2013 paper that work well with families of data. Some rules can be translated into quantifiable metrics, others may have to remain as principles. I like to use quotes when referring to terms such as 'core', 'invalid', or 'best' to remind ourselves that these are artificial constructs that we apply in reference to a specific question, system, and dataset. The blessing and bane of methods like T-LoCoH is that it forces one to think about choices that go into modeling space use. Best, Andy On 5/20/2015 2:17 AM, Andr? Zehnder wrote: > > Hi Andy, > > Thank you for your quick answer. That would mean that the lxy.nn.add() > function works correctly, but does not perform well with my kind of > data. I tried out the lxy.amin.add() function you mentioned. I did not > find an example of it but I think this is the correct way of calling > it: lxy.amin.add(?lxy-data?, s=svalue, nnn=kvalue, ptp=0.90). Although > the a-value produced by this function is somewhat lower than the one > of lxy.nn.add(), it is still much higher than what I would choose. > > Unfortunately, the MSHC-method to choose the a-/k-value is not > possible since there are no large features that are known to be > avoided by the animals in the study area. I will try to look for > another criterion that supports a more objective choice of the > a-value. If I find anything, I will let you know. > > Best regards > > Andr? Zehnder > > *Von:*Andy Lyons [mailto:lyons.andy at gmail.com] > *Gesendet:* Dienstag, 19. Mai 2015 09:27 > *An:* Andr? Zehnder > *Cc:* tlocoh-info at lists.r-forge.r-project.org > *Betreff:* Re: [tlocoh-info] auto.a() function suggests much too high > a-values > > Hi Andr?, > > Good questions. Your diagnosis shows that you understand what's going > on. You're quite right that selecting a value for 'a' is not > intuitive, in part because it represents a cumulative distance of each > point to several of its nearest neighbors, and in the case where time > is incorporated in the selection of nearest neighbors (s>0), the > distance is not a physical distance. > > The auto.a() function provides a starting point that has proven useful > for many datasets, but it really is just that - a starting point to > narrow down the range of 'a' values that provide a reasonable balance > between over-estimation and under-estimation. The ultimate selection > of 'a' should be based on your (admittedly subjective) assessment of > minimizing spurious holes in the utilization distribution, and > spurious cross-overs. Part of the subjectivity in selecting a > parameter value (for any home range estimation method really) involves > reflecting upon whether your research question requires better > fidelity to the core area or overall 'home range'. In other words, > there is no recommended 'a' value. There are only recommended > principles for selecting 'a' or 'k' (see appendix I of Lyons et al > 2013), along with some tools (plots) to help you select a value. All > of which is less convenient to be sure than a one-click solution, but > hopefully keeps you close to your data and pushes you to think about > what you want from your space use model. > > As to why the upper and lower ranges returned by the 'auto.a()' > function did a poor job for your dataset is hard to say, but it could > be related to the geometry of the points or the sampling frequency. > Remember that auto.a(ptp = 0.98, nnn = 2) returns the value of 'a' > such that 98% of points have at least two nearest neighbors. If the > distribution of points is wide ranging, this could result in a large > "lower bound" that blows up the core areas. The suggestion to let k = > sqrt(numberOfPoints) is likewise a a starting point and not meant to > be a recommended value. > > There is alternative function called lxy.amin.add() to help identify > upper and lower bounds for 'a'. But it is more of a convenience > function and it operates on similar principles as auto.a(). There is > also a relatively new function in tlocoh.dev that opens a GUI > (Shinyapp) which is designed to help select parameter values. It isn't > documented yet but see some sample code below. > > Hope this helps. > > Andy > > > if (!require(tlocoh.dev)) stop("Please install tlocoh.dev") > ## Loading required package: tlocoh.dev > if (packageVersion("tlocoh.dev") < "1.2.02") stop("Please update your > tlocoh.dev package") > > ## Load suggested packages > pkgs <- c("rgdal", "raster", "shiny", "dismo") > not.installed <- pkgs[!sapply(pkgs, function(p) require(p, > character.only=T))] > > ## Create a hullset with evenly spaced parameter values (in this case > k=4:20, > ## (could also be evenly spaced 'a' values, use something like > a=seq(from=1000, to=15000, by=1000) > > raccoon.lhs <- lxy.lhs(raccoon.lxy, s=0.05, k=4:20, iso.add=TRUE, > status=FALSE) > > ## Download a background image for display > raccoon.gmap <- lhs.gmap(raccoon.lhs, gmap="hybrid") > > ## Graphically select one of the parameter values by examining the > isopleths, EAR plot, and ISO area plot > raccoon.sel <- lhs.selection(raccoon.lhs) > raccoon.sel <- lhs.shiny.select(raccoon.lhs, selection=raccoon.sel, > gmap=raccoon.gmap) > > ## Apply selection > raccoon.lhs <- lhs.select(racoon.lhs, selection=raccoon.sel) > > > On 5/18/2015 10:38 AM, Andr? Zehnder wrote: > > Hi all, > > I am performing a home range analysis with GPS data of some > leopards and lions. The input data has a highly variable point > density and result in quite large areas (roughly a magnitude of > 500 to 1?000 km2 for the 95% isopleth). In agreement with the > tutorial, I begin with selecting the value for the temporal > parameter s and then select suitable k values. As an orientation > for that I use the rule of thumb ( k = sqrt(numberOfPoints)) and > the plots. When a k-value has been chosen, the tutorial recommends > to use the auto.a() function (lxy.nn.add(toni.lxy, s=0.003, > a=auto.a(nnn=15, ptp=0.98))). > > However, the recommended a-value is massively too high and results > in a oversmoothed home range that lacks any details. The higher > the s-value, the more severe is this issue. While the result of > the suggested a-value still shows a few weak spatial details for > s=0, almost circular home ranges result for all isopleths with > s>0. I checked whether this issue occurs only for one dataset, but > it is the same for all 5 datasets I have checked. I attached two > images that present the result when using the recommended a-value > (auto_) and one that presents a manually selected a-value > (manually_). For example, for s=0.005, I would rather take an > a-value between 150?000 and 190?000 than the recommended value of > 1?150?000. The auto.a() function should thereby include at least k > points for 90% of all hulls. > > Therefore the question: Has anyone experienced the same issue or > is it even a known technical problem with the package? My datasets > contain 5?000 to 30?000 fixes, have some gaps and includes > sometimes different sampling intervals. May the auto.a() function > have severe problems due to that? The choice of an a-value is > rather subjective and not really intuitive, especially when s>0. > But when the auto.a() function can?t be used to get an approximate > reference, what other measures are available to be able to justify > your choice of the a-value? > > PS: I use T-LoCoH version 1.34.00 with RStudio 0.98.1103. > > Best regards, > > Andr? Zehnder > > > > > _______________________________________________ > > Tlocoh-info mailing list > > Tlocoh-info at lists.r-forge.r-project.org > > http://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/tlocoh-info > > > > _______________________________________________ > Tlocoh-info mailing list > Tlocoh-info at lists.r-forge.r-project.org > http://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/tlocoh-info -------------- next part -------------- An HTML attachment was scrubbed... URL: From wgetz at berkeley.edu Wed May 20 18:27:49 2015 From: wgetz at berkeley.edu (Wayne Getz) Date: Wed, 20 May 2015 09:27:49 -0700 Subject: [tlocoh-info] auto.a() function suggests much too high a-values In-Reply-To: <555CA82E.2080205@gmail.com> References: <555AE5C4.50204@gmail.com> <555CA82E.2080205@gmail.com> Message-ID: <2702680C-5B23-484E-9C95-FC3AB078CFE8@berkeley.edu> Dear Andy and Andre: I always return to the concept of the tradeoff between type I areas (excluding areas that do belong) and type II errors (including areas that don?t belong). Andy is right that there are not going to be ?one size fits all rules?, but always approach the choice of parameters in terms of increasingly accepting type II at the expense of type I errors, as you increase the value of the parameter in question (a, k, etc.). Thus you cannot reduce both kinds of errors simultaneously, but only trade of one against the other. So bring into your thinking what kind of errors are more tolerable for you in terms of the question you are addressing. Best Wayne > On May 20, 2015, at 8:28 AM, Andy Lyons wrote: > > Thanks Andr?. Another way to approach it would be to begin by looking for a lower bound of 'a'. For example the following would compute the smallest 'a' value that results in 50% of the points having only 3 nearest neighbors. > > toni.lxy <- lxy.amin.add(toni.lxy, s=0.003, ptp = 0.5, nnn = 3) > > That would almost certainly find an 'a' value that results in many slivers, and a very fragmented 50% isopleth 'core' area. But you could then start cranking it up. > > If there are no landscape features or behavioral patterns that would allow you to discern an "invalid" cross-over (i.e., a part of the landscape that is included in say the 95% isopleth, but the individual was never observed there), then another strategy could be to focus on the 'core' area (i.e., a 25% or 50% isopleth). If your knowledge of the system and species suggests that there is no reason to think the 'core' area should be highly fragmented, then select the smallest value of 'a' that fills in the spaces in homogeneous habitat, and stop there. The edge-to-area ratio plot of the lower isopleths may help here. > > Also note there's a 'kmin' argument in lxy.lhs that can be used to 'force' all points to be part of a hull. So if for example you find a value of a=10000 does a 'good' job in delineating the 50% isopleth, but there are some important outlying points that are too far apart to have at least two neighbors within a cumulative distance of 10,000, you could pass kmin=2 (or 3, or 4) so that even those outlying points would be in hulls (even if only triangles) and thus included in the 100% isopleth. > > Good luck and yes please let us know if you find a more objective criteria for choice of the a-value. I suspect there will never be a one-size-fits-all rule that can be applied to all datasets, but there are probably rules that are more specified than the generic principles laid out in our 2013 paper that work well with families of data. Some rules can be translated into quantifiable metrics, others may have to remain as principles. I like to use quotes when referring to terms such as 'core', 'invalid', or 'best' to remind ourselves that these are artificial constructs that we apply in reference to a specific question, system, and dataset. The blessing and bane of methods like T-LoCoH is that it forces one to think about choices that go into modeling space use. > > Best, > Andy > > > > On 5/20/2015 2:17 AM, Andr? Zehnder wrote: >> Hi Andy, >> >> Thank you for your quick answer. That would mean that the lxy.nn.add() function works correctly, but does not perform well with my kind of data. I tried out the lxy.amin.add() function you mentioned. I did not find an example of it but I think this is the correct way of calling it: lxy.amin.add(?lxy-data?, s=svalue, nnn=kvalue, ptp=0.90). Although the a-value produced by this function is somewhat lower than the one of lxy.nn.add(), it is still much higher than what I would choose. >> >> Unfortunately, the MSHC-method to choose the a-/k-value is not possible since there are no large features that are known to be avoided by the animals in the study area. I will try to look for another criterion that supports a more objective choice of the a-value. If I find anything, I will let you know. >> >> Best regards >> Andr? Zehnder >> >> Von: Andy Lyons [mailto:lyons.andy at gmail.com ] >> Gesendet: Dienstag, 19. Mai 2015 09:27 >> An: Andr? Zehnder >> Cc: tlocoh-info at lists.r-forge.r-project.org >> Betreff: Re: [tlocoh-info] auto.a() function suggests much too high a-values >> >> Hi Andr?, >> >> Good questions. Your diagnosis shows that you understand what's going on. You're quite right that selecting a value for 'a' is not intuitive, in part because it represents a cumulative distance of each point to several of its nearest neighbors, and in the case where time is incorporated in the selection of nearest neighbors (s>0), the distance is not a physical distance. >> >> The auto.a() function provides a starting point that has proven useful for many datasets, but it really is just that - a starting point to narrow down the range of 'a' values that provide a reasonable balance between over-estimation and under-estimation. The ultimate selection of 'a' should be based on your (admittedly subjective) assessment of minimizing spurious holes in the utilization distribution, and spurious cross-overs. Part of the subjectivity in selecting a parameter value (for any home range estimation method really) involves reflecting upon whether your research question requires better fidelity to the core area or overall 'home range'. In other words, there is no recommended 'a' value. There are only recommended principles for selecting 'a' or 'k' (see appendix I of Lyons et al 2013), along with some tools (plots) to help you select a value. All of which is less convenient to be sure than a one-click solution, but hopefully keeps you close to your data and pushes you to think about what you want from your space use model. >> >> As to why the upper and lower ranges returned by the 'auto.a()' function did a poor job for your dataset is hard to say, but it could be related to the geometry of the points or the sampling frequency. Remember that auto.a(ptp = 0.98, nnn = 2) returns the value of 'a' such that 98% of points have at least two nearest neighbors. If the distribution of points is wide ranging, this could result in a large "lower bound" that blows up the core areas. The suggestion to let k = sqrt(numberOfPoints) is likewise a a starting point and not meant to be a recommended value. >> >> There is alternative function called lxy.amin.add() to help identify upper and lower bounds for 'a'. But it is more of a convenience function and it operates on similar principles as auto.a(). There is also a relatively new function in tlocoh.dev that opens a GUI (Shinyapp) which is designed to help select parameter values. It isn't documented yet but see some sample code below. >> >> Hope this helps. >> >> Andy >> >> >> if (!require(tlocoh.dev)) stop("Please install tlocoh.dev") >> ## Loading required package: tlocoh.dev >> if (packageVersion("tlocoh.dev") < "1.2.02") stop("Please update your tlocoh.dev package") >> >> ## Load suggested packages >> pkgs <- c("rgdal", "raster", "shiny", "dismo") >> not.installed <- pkgs[!sapply(pkgs, function(p) require(p, character.only=T))] >> >> ## Create a hullset with evenly spaced parameter values (in this case k=4:20, >> ## (could also be evenly spaced 'a' values, use something like a=seq(from=1000, to=15000, by=1000) >> >> raccoon.lhs <- lxy.lhs(raccoon.lxy, s=0.05, k=4:20, iso.add=TRUE, status=FALSE) >> >> ## Download a background image for display >> raccoon.gmap <- lhs.gmap(raccoon.lhs, gmap="hybrid") >> >> ## Graphically select one of the parameter values by examining the isopleths, EAR plot, and ISO area plot >> raccoon.sel <- lhs.selection(raccoon.lhs) >> raccoon.sel <- lhs.shiny.select(raccoon.lhs, selection=raccoon.sel, gmap=raccoon.gmap) >> >> ## Apply selection >> raccoon.lhs <- lhs.select(racoon.lhs, selection=raccoon.sel) >> >> >> >> On 5/18/2015 10:38 AM, Andr? Zehnder wrote: >> Hi all, >> >> I am performing a home range analysis with GPS data of some leopards and lions. The input data has a highly variable point density and result in quite large areas (roughly a magnitude of 500 to 1?000 km2 for the 95% isopleth). In agreement with the tutorial, I begin with selecting the value for the temporal parameter s and then select suitable k values. As an orientation for that I use the rule of thumb ( k = sqrt(numberOfPoints)) and the plots. When a k-value has been chosen, the tutorial recommends to use the auto.a() function (lxy.nn.add(toni.lxy, s=0.003, a=auto.a(nnn=15, ptp=0.98))). >> >> However, the recommended a-value is massively too high and results in a oversmoothed home range that lacks any details. The higher the s-value, the more severe is this issue. While the result of the suggested a-value still shows a few weak spatial details for s=0, almost circular home ranges result for all isopleths with s>0. I checked whether this issue occurs only for one dataset, but it is the same for all 5 datasets I have checked. I attached two images that present the result when using the recommended a-value (auto_) and one that presents a manually selected a-value (manually_). For example, for s=0.005, I would rather take an a-value between 150?000 and 190?000 than the recommended value of 1?150?000. The auto.a() function should thereby include at least k points for 90% of all hulls. >> >> Therefore the question: Has anyone experienced the same issue or is it even a known technical problem with the package? My datasets contain 5?000 to 30?000 fixes, have some gaps and includes sometimes different sampling intervals. May the auto.a() function have severe problems due to that? The choice of an a-value is rather subjective and not really intuitive, especially when s>0. But when the auto.a() function can?t be used to get an approximate reference, what other measures are available to be able to justify your choice of the a-value? >> >> PS: I use T-LoCoH version 1.34.00 with RStudio 0.98.1103. >> >> Best regards, >> Andr? Zehnder >> >> >> >> >> >> _______________________________________________ >> Tlocoh-info mailing list >> Tlocoh-info at lists.r-forge.r-project.org >> http://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/tlocoh-info >> >> >> >> _______________________________________________ >> Tlocoh-info mailing list >> Tlocoh-info at lists.r-forge.r-project.org >> http://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/tlocoh-info > > _______________________________________________ > Tlocoh-info mailing list > Tlocoh-info at lists.r-forge.r-project.org > http://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/tlocoh-info ___________________________________________________________ ___________________________________________________________ Professor Wayne M. Getz A. Starker Leopold Professor of Wildlife Ecology Department Environmental Science Policy & Management 130 Mulford Hall University of California at Berkeley CA 94720-3112, USA Campus Visitors: My office is in 5052 VLSB Fax: ( (1-510) 666-2352 Office: (1-510) 642-8745 Lab: (1-510) 643-1227 email: wgetz at berkeley.edu lab: http://www.CNR.Berkeley.EDU/~getz/ T-LoCoH: http://tlocoh.r-forge.r-project.org/ NOVA: http://www.novamodeler.com/ ___________________________________________________________ ___________________________________________________________ -------------- next part -------------- An HTML attachment was scrubbed... URL: