BesagL
更多信息和选项
- BesagL 是 RipleyK 函数的一个变形,可以让与空间上随机参考过程对比变得更简单 .
- BesagL
定义为
,其中
是 RipleyK,
是空间维度,而
是
中单元球体的体积. - BesagL 度量范围 r 内点集的空间同质性. 与泊松点过程对比,我们有:
-

比泊松更离散 
类似泊松,即为完全空间随机 
比泊松更聚集 - 半径 r 可为单个值或一列表的值. 在没有指定半径 r 的情况下,BesagL 返回一个可以用于重复计算
函数的 PointStatisticFunction. - 点 pdata 可有如下形式:
-
{p1,p2,…} 点 pi GeoPosition[…],GeoPositionXYZ[…],… 地理点 SpatialPointData[…] 空间点集 {pts,reg} 点集 pts 和观察区域 reg - 若未给定观察区域 reg,则会自动使用 RipleyRassonRegion 计算出一个区域.
- 点过程 pproc 可有如下形式:
-
proc 一个点过程 proc {proc,reg} 一个点过程 proc 和观察区域 reg - 观察区域 reg 应该没有参数且 SpatialObservationRegionQ.
- 分箱数据 bdata 来自于 SpatialBinnedPointData 且被看做是一个带分段的常密度函数的 InhomogeneousPoissonPointProcess.
- 对于 pdata 而言,通过对相互距离不超过 r 范围内的不同点对进行计数计算出
. - 对于 pproc 而言,通过使用精确的公式或模拟生成点数据的方式计算出
. - 可以给出下列选项:
-
Method Automatic 用什么方法 SpatialBoundaryCorrection Automatic 用什么边界校正 - 下列设置可在 SpatialBoundaryCorrection 中使用:
-
Automatic 自动决定边界校正 None 无边界校正 "BorderMargin" 对观察区域使用内部边缘 "Ripley" 根据点到边界的距离使用权重
范例
打开所有单元 关闭所有单元基本范例 (3)
region = Ball[{0, 0}];
pts = RandomPoint[region, 100];BesagL[{pts, region}, 0.2]spd = SpatialPointData[RandomReal[1, {500, 3}]]rspec = Range[0.1, 0.4, 0.01];est = BesagL[spd, rspec];用 ListPlot 可视化结果:
ListPlot[est, DataRange -> MinMax[rspec], AxesLabel -> {r}, Filling -> Axis]lfun = BesagL[CauchyPointProcess[μ, λ, b, 2], r]Plot[lfun /. {μ -> 3, λ -> 2, b -> 1}, {r, 0, 3}, AxesLabel -> Automatic]范围 (10)
点数据 (5)
region = Rectangle[{0, 0}, {1, 2}];
pts = RandomPoint[region, 100];BesagL[{pts, region}, 0.2]BesagL[{pts, region}, {0.1, 0.3, 0.05, 0.23}]使用带有 SpatialPointData 的 BesagL:
spd = SpatialPointData[RandomReal[1, {500, 2}]]res = BesagL[spd, {0.01, 0.02}]创建一个 PointStatisticFunction 以便将来使用:
reg = Disk[];
pts = RandomPoint[Disk[], 100];psf = BesagL[{pts, reg}]psf[0.5]BlockRandom[SeedRandom[1];
pts = RandomReal[1, {100, 2}]];psf = BesagL[pts]psf["ObservationRegion"]psf[0.3]使用有 GeoPosition 的 BesagL:
pts = RandomGeoPosition[GeoDisk[GeoPosition[{0, 0}], Quantity[10, "Kilometers"]], 10 ^ 2]psf = BesagL[pts]ListPlot[Table[{x, psf[x]}, {x, Quantity[0, "km"], psf["MaxRadius"], Quantity[.1, "km"]}], AxesLabel -> {"km"}]点过程 (5)
PoissonPointProcess 的 Besag
函数不取决于密度或维度:
proc = PoissonPointProcess[μ, d];BesagL[proc, r]带有指定维度的集群过程 ThomasPointProcess 的 Besag
函数:
proc2D = ThomasPointProcess[μ, λ, σ, 2];BesagL[proc2D, r]proc3D = ThomasPointProcess[μ, λ, σ, 3];BesagL[proc3D, r]带有指定维度的集群过程 MaternPointProcess 的 Besag
函数:
proc2D = MaternPointProcess[μ, λ, rad, 2];BesagL[proc2D, r]proc3D = MaternPointProcess[μ, λ, rad, 3];BesagL[proc3D, rad]集群过程 CauchyPointProcess 的 Besag
函数:
proc = CauchyPointProcess[μ, λ, b, dim];BesagL[proc, r]集群过程 VarianceGammaPointProcess 的 Besag
函数:
proc = VarianceGammaPointProcess[μ, λ, α, β, dim];BesagL[proc, r]选项 (2)
SpatialBoundaryCorrection (2)
没有边界校正的 BesagL 估计量会有偏误,且除非在较大点集的情况下否则不应使用:
region = Rectangle[{0, 0}, {2, 1}];
pts = RandomPoint[region, 100];r = 0.2;BesagL[{pts, region}, r, SpatialBoundaryCorrection -> "None"]默认方法 "BorderMargin" 只包括到边界距离为
的点:
inregion = Rectangle[{r, r}, {2 - r, 1 - r}];
Show[RegionPlot[{region, inregion}, AspectRatio -> Automatic], ListPlot[pts]]BesagL[{pts, region}, r, SpatialBoundaryCorrection -> "BorderMargin"]边界校正方法 "Ripley" 对每对点都取权重使该估计量无偏:
BesagL[{pts, region}, r, SpatialBoundaryCorrection -> "Ripley"]reg = Ball[{0, 0, 0}];
pts = RandomPoint[reg, 200];rad = Range[0.01, 0.5, 0.02];
m = {"None", "BorderMargin", "Ripley"};data = BesagL[{pts, reg}, rad, SpatialBoundaryCorrection -> #]& /@ m;val = BesagL[PoissonPointProcess[λ, 3], r]Show[ListPlot[data, DataRange -> MinMax[rad], PlotLegends -> m], Plot[val, {r, 0, 0.5}, PlotStyle -> Gray, PlotLegends -> {val}], AxesLabel -> {r}]应用 (5)
region = Ellipsoid[{0, 0}, {2, 3}];
pts = RandomPoint[region, 500];fun = BesagL[pts]Plot[fun[r], {r, 0, 1}, AxesLabel -> Automatic]region[d_] := Ball[d]
pts[d_] := RandomPoint[region[d], 1000]rspec = Range[0.02, 0.8, 0.02];
data = Table[BesagL[{pts[d], region[d]}, rspec], {d, 1, 5}];ListLinePlot[data, DataRange -> MinMax[rspec], AxesLabel -> {r}, PlotLegends -> (Row[{#, "D"}]& /@ Range[5])]region = Ellipsoid[{0, 0}, {1, 2}];
radii = {0.05, 0.1, 0.15};
spds = Table[RandomPointConfiguration[HardcorePointProcess[200, R, 2], region, Method -> {"MCMC", "LengthOfRun" -> 30000}], {R, radii}];Table[Graphics[Point[spds[[k]]["Points"]], PlotRange -> {{-1, 1}, {-2, 2}}, Frame -> True, FrameLabel -> Row[{"hard-core R = ", radii[[k]]}]], {k, 3}]rspec = Range[0.01, 0.3, 0.01];
data = Table[BesagL[spd, rspec], {spd, spds}];ListLinePlot[data, DataRange -> MinMax[rspec], AxesLabel -> {r}, PlotLegends -> (Row[{"hard-core R = ", #}]& /@ radii)]Map[rspec[[FirstPosition[#, _ ? Positive]]]&, data]//Flatten集群数据的 Besag
高于完全空间随机数据. 下面是某个集群过程的样本:
reg = Rectangle[{0, 0}, {4, 4}];
ptsT = RandomPointConfiguration[ThomasPointProcess[30, 20, .5, 2], reg];ptsP = RandomPointConfiguration[PoissonPointProcess[30, 2], reg];ListPlot /@ {ptsP, ptsT}rspec = Range[0.02, 2, 0.02];ListLinePlot[{BesagL[ptsP, rspec], BesagL[ptsT, rspec]}, PlotLegends -> {"Poisson", "Thomas"}, DataRange -> MinMax[rspec], AxesLabel -> {r}]使用 Besag
函数计算 PairCorrelationG:
reg = Disk[];
pts = RandomPoint[reg, 10 ^ 3];rlist = Range[0.01, 0.2, 0.01];pc = PairCorrelationG[{pts, reg}, rlist];besagL = BesagL[pts]pcL = PairCorrelationG[{besagL, {0, 0.2, 0.01}}, rlist];ListLinePlot[{pc, pcL}, DataRange -> MinMax@rlist, PlotLegends -> {"PC from data", "PC estimated from K"}, AxesLabel -> {r}]属性和关系 (1)
可能出现的问题 (1)
有边界校正的经验 BesagL 函数可能不是递增的(尤其对于较小的集合而言):
region = Rectangle[];
SeedRandom["spatial"];
data = RandomPoint[region, 30];Plot[BesagL[{data, region}][r], {r, 0, 1 / 2}]未校正的 BesagL 是递增的:
Plot[BesagL[{data, region}, r, SpatialBoundaryCorrection -> None], {r, 0, 1 / 2}]文本
Wolfram Research (2020),BesagL,Wolfram 语言函数,https://reference.wolfram.com/language/ref/BesagL.html.
CMS
Wolfram 语言. 2020. "BesagL." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/BesagL.html.
APA
Wolfram 语言. (2020). BesagL. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/BesagL.html 年
BibTeX
@misc{reference.wolfram_2026_besagl, author="Wolfram Research", title="{BesagL}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/BesagL.html}", note=[Accessed: 10-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_besagl, organization={Wolfram Research}, title={BesagL}, year={2020}, url={https://reference.wolfram.com/language/ref/BesagL.html}, note=[Accessed: 10-September-2026]}