EmptySpaceF[pdata,r]
估算点数据 pdata 在半径 r 的空白空间函数
.
EmptySpaceF[pproc,r]
为点过程 pproc 计算
.
EmptySpaceF[bdata,r]
为分箱 bdata 数据计算
.
EmptySpaceF[pspec]
生成可重复应用于不同半径 r 的函数
.
EmptySpaceF
EmptySpaceF[pdata,r]
估算点数据 pdata 在半径 r 的空白空间函数
.
EmptySpaceF[pproc,r]
为点过程 pproc 计算
.
EmptySpaceF[bdata,r]
为分箱 bdata 数据计算
.
EmptySpaceF[pspec]
生成可重复应用于不同半径 r 的函数
.
更多信息和选项
- EmptySpaceF 也可称作球形紧凑分布函数.
- 函数
给出任意位置的距离
内寻找点的概率,该位置通常不是 pdata 的点. -

- 当与泊松点过程比较是,结果为:
-

- 半径 r 可以是单个值或一个值得列表. 如果没有指定半径 r,则 EmptySpaceF 返回一个可用于重复计算
函数的 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,
是通过离散观察区域并假设常数点强度的方法进行计算. - 对于 pproc,
通过准确的方程式或通过模拟生成点数据的方法进行计算. - 可以给出下列选项:
-
Method Automatic 使用何种方法 SpatialBoundaryCorrection Automatic 使用何种边界校正 - 下列设置可用于 SpatialBoundaryCorrection:
-
Automatic 自动决定边界校正 None 无边界校正 "BorderMargin" 对观察区域使用内部边距 "Hanisch" 删除那些到最近邻的距离大于到边界的距离的点 "KaplanMeier" SurvivalDistribution 方法:用到区域边界的距离裁剪其到最近邻的点距离 "NelsonAalen" SurvivalDistribution 方法:用到区域边界的距离裁剪其到最近邻的点距离 - 设置 Method->{"Discretization"->opts} 允许调整估算时的离散化方法. 这里 opts 可以是 DiscretizeRegion 的任何有效选项.
范例
打开所有单元 关闭所有单元基本范例 (3)
region = Ball[{0, 0}];
pts = RandomPoint[region, 100];EmptySpaceF[{pts, region}, 0.1]spd = SpatialPointData[RandomReal[1, {100, 2}]]rspec = Range[0.01, 0.2, 0.01];est = EmptySpaceF[spd, rspec];使用 ListPlot 可视化结果:
ListPlot[est, DataRange -> MinMax[rspec], Filling -> Axis, AxesLabel -> {r}]f = EmptySpaceF[ThomasPointProcess[3, 2, 0.2, 2], r];Plot[f, {r, 0, 0.5}, AxesLabel -> Automatic]范围 (7)
点数据 (4)
region = Rectangle[{0, 0}, {1, 2}];
pts = RandomPoint[region, 100];EmptySpaceF[{pts, region}, 0.1]EmptySpaceF[{pts, region}, {0.1, 0.15, 0.01, 0.03}]创建 PointStatisticFunction 以便未来使用:
reg = Disk[];
pts = RandomPoint[Disk[], 100];psf = EmptySpaceF[{pts, reg}]psf[0.1]BlockRandom[SeedRandom[1];
pts = RandomReal[1, {100, 2}]
];psf = EmptySpaceF[pts]psf["ObservationRegion"]psf[0.05]使用有 GeoPosition 的 EmptySpaceF:
pts = RandomGeoPosition[GeoDisk[GeoPosition[{0, 0}], Quantity[10, "Kilometers"]], 10 ^ 2]psf = EmptySpaceF[pts]ListPlot[Table[{x, psf[x]}, {x, Quantity[0, "km"], psf["MaxRadius"], Quantity[.1, "km"]}], AxesLabel -> {"km"}]点过程 (3)
PoissonPointProcess 的空白空间函数有闭合形式:
proc = PoissonPointProcess[μ, d];EmptySpaceF[proc, r]Plot[Table[EmptySpaceF[proc /. μ -> 2, r], {d, 1, 4}]//Evaluate, {r, 0, 1.3}, AxesLabel -> {r}, PlotLegends -> (Row[{#, "D"}]& /@ Range[4])]有指定维度的聚集过程 ThomasPointProcess 的空白空间函数:
proc2D = ThomasPointProcess[30, 10, .3, 2];DiscretePlot[EmptySpaceF[proc2D, r], {r, 0.01, .5, .02}, PlotRange -> {0, 1}, AxesLabel -> Automatic]proc3D = ThomasPointProcess[30, 10, .3, 3];DiscretePlot[EmptySpaceF[proc3D, r], {r, 0.01, .5, .02}, PlotRange -> {0, 1}, AxesLabel -> Automatic]有指定维度的聚集过程 MaternPointProcess 的空白空间函数:
proc2D = MaternPointProcess[30, 5, 1, 2];DiscretePlot[EmptySpaceF[proc2D, r], {r, 0.01, .5, .02}, PlotRange -> {0, 1}, AxesLabel -> Automatic]proc3D = MaternPointProcess[30, 5, 1, 3];DiscretePlot[EmptySpaceF[proc3D, r], {r, 0.01, .5, .02}, PlotRange -> {0, 1}, AxesLabel -> Automatic]选项 (3)
SpatialBoundaryCorrection (2)
没有边界校正的 EmptySpaceF 估计量会有偏误,且除非为一个大的点集否则不应被使用:
region = Rectangle[{0, 0}, {1, 2}];
pts = RandomPoint[region, 100];EmptySpaceF[{pts, region}, 0.1, SpatialBoundaryCorrection -> "None"]默认方法 "BorderMargin" 只考虑距离边界
的点:
EmptySpaceF[{pts, region}, 0.1, SpatialBoundaryCorrection -> "BorderMargin"]"Hanisch" 方法给在观察区域内的每个点添加权重,使得估计值无偏误:
EmptySpaceF[{pts, region}, 0.1, SpatialBoundaryCorrection -> "Hanisch"]"KaplanMeier" 和 "NelsonAalen" 方法是在 SurvivalDistribution 中使用的估计量. 每个点到其最近邻点的距离被每个点到观察区域边界的距离截尾:
EmptySpaceF[{pts, region}, 0.1, SpatialBoundaryCorrection -> "KaplanMeier"]EmptySpaceF[{pts, region}, 0.1, SpatialBoundaryCorrection -> "NelsonAalen"]region = Disk[];
pts = RandomPoint[region, 400];rlist = Range[0.01, 0.1, 0.005];
mths = {"BorderMargin", "Hanisch", "KaplanMeier"};data = EmptySpaceF[{pts, region}, rlist, SpatialBoundaryCorrection -> #]& /@ mths;f[r_] := 1 - Exp[-(400 / RegionMeasure[region])(Pi)r ^ 2]Show[Plot[f[r], {r, 0, 0.1}, PlotStyle -> Gray, PlotLegends -> {"theoretical"}], ListPlot[data, DataRange -> MinMax[rlist], PlotLegends -> mths], AxesLabel -> {r}]Method (1)
离散化设置可在 Method 下面作为子选项提供:
region = Triangle[{{0, 0}, {1, 2}, {-3, 1}}];
pts = RandomPoint[region, 100];在同样半径下估算不同值的 MaxCellMeasure 的空白空间函数:
EmptySpaceF[{pts, region}, 0.05, Method -> {"Discretization" -> {MaxCellMeasure -> #}}]& /@ {0.005, 0.01, 0.02}EmptySpaceF[{pts, region}, 0.05, Method -> {"Discretization" -> {Method -> #}}]& /@ {"Continuation", "DiscretizeGraphics"}应用 (3)
data1 = RandomPointConfiguration[PoissonPointProcess[20, 2], Disk[]];
data2 = RandomPointConfiguration[InhomogeneousPoissonPointProcess[Function[{x, y}, (20x ^ 2 + 40y ^ 2)], 2], Disk[]];F1 = EmptySpaceF[data1];
F2 = EmptySpaceF[data2];Plot[{F1[r], F2[r]}, {r, 0, 1}, PlotRange -> All, AxesLabel -> {r}]rr = {0.05, 0.1, 0.15};
spds = Table[RandomPointConfiguration[HardcorePointProcess[100, rad, 2], Disk[]], {rad, rr}];Fs = Table[EmptySpaceF[spd], {spd, spds}];DiscretePlot[Map[#[r]&, Fs]//Evaluate, {r, 0.005, 0.2, 0.005}, AxesLabel -> {r}, PlotLegends -> (Row[{"rad = ", #}]& /@ rr)]2019 年 5 月 20 日周一,极端气候预警中心高亮了一个从德州地图上突出的狭长区域的东北部到俄克拉荷马中部的狭长走廊处,在一个给定位置半径 25 英里范围内有 45% 的几率会发生 EF2 到 EF5 级龙卷风,这也定义了 EmptySpaceF 的值:
eqn[proc_] := (EmptySpaceF[proc, Quantity[25, "Miles"]] == .45)eqn[PoissonPointProcess[λ, 2]]sol = First@Solve[eqn[PoissonPointProcess[λ, 2]], λ]model = PoissonPointProcess[λ /. sol, 2]Plot[EmptySpaceF[model, Quantity[r, "Miles"]], {r, 0, 50}, AxesLabel -> {"Miles"}]OK = RandomPointConfiguration[model, Entity["AdministrativeDivision", {"Oklahoma", "UnitedStates"}]["Polygon"]]GeoListPlot[OK["Points"], GeoRange -> Entity["AdministrativeDivision", {"Oklahoma", "UnitedStates"}]]属性和关系 (4)
空白空间函数的行为表现得像 CDF:
data = RandomPointConfiguration[PoissonPointProcess[20, 2], Disk[]];F = EmptySpaceF[data]Plot[F[r], {r, 0, 1}, PlotRange -> All]The empty space function for a PoissonPointProcess 的空白空间函数等价于在一个半径为
的圆盘上 0 处 PointCountDistribution 的 SurvivalFunction:
proc[d_] := PoissonPointProcess[μ, d]EmptySpaceF[proc[d], r]dist[d_] := PointCountDistribution[proc[d], Ball[ConstantArray[0, d], r]];SurvivalFunction[dist[2], 0] === EmptySpaceF[proc[2], r]SurvivalFunction[dist[3], 0] === EmptySpaceF[proc[3], r]With[{d = RandomInteger[10 ^ 6]}, SurvivalFunction[dist[d], 0] === EmptySpaceF[proc[d], r]]PoissonPointProcess 的空白空间和最近邻函数相等:
proc = PoissonPointProcess[μ, d];EmptySpaceF[proc, r]NearestNeighborG[proc, r]%% - %在以为空间中,它们都等价于 ExponentialDistribution 的累计分布函数:
vol[d_] := π ^ (d / 2) / Gamma[1 + d / 2]CDF[ExponentialDistribution[μ * vol[1]], r]Block[{d = 1}, % == EmptySpaceF[proc, r] == NearestNeighborG[proc, r]//Simplify[#, r ≥ 0]&]EmptySpaceF 通常与 NearestNeighborG 对比,估算的是在距离点集中的某个点 r 范围内找到另一个点的概率:
region = Ball[{0, 0}];
pts = RandomPoint[region, 1000];rspec = Range[0, 0.08, 0.005];
res = NearestNeighborG[{pts, region}, rspec];用 ListPlot 可视化结果:
ListPlot[res, DataRange -> MinMax[rspec], Filling -> Axis, AxesLabel -> {r}]对比由 HardcorePointProcess 生成的点数据的 EmptySpaceF 和 NearestNeighborG 的估计值:
spd1 = RandomPointConfiguration[HardcorePointProcess[500, 0.15, 2], region]rspec1 = Range[0, 0.3, 0.01];
esf = EmptySpaceF[spd1, rspec1];
nng = NearestNeighborG[spd1, rspec1];ListLinePlot[{nng, esf}, DataRange -> MinMax[rspec1], Filling -> Axis, AxesLabel -> {r}, PlotLegends -> {"Nearest Neighbor Distribution", "Empty Space Distribution"}]文本
Wolfram Research (2020),EmptySpaceF,Wolfram 语言函数,https://reference.wolfram.com/language/ref/EmptySpaceF.html.
CMS
Wolfram 语言. 2020. "EmptySpaceF." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/EmptySpaceF.html.
APA
Wolfram 语言. (2020). EmptySpaceF. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/EmptySpaceF.html 年
BibTeX
@misc{reference.wolfram_2026_emptyspacef, author="Wolfram Research", title="{EmptySpaceF}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/EmptySpaceF.html}", note=[Accessed: 14-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_emptyspacef, organization={Wolfram Research}, title={EmptySpaceF}, year={2020}, url={https://reference.wolfram.com/language/ref/EmptySpaceF.html}, note=[Accessed: 14-October-2026]}