SpatialMedian[{x1,x2,…}]
给出元素
的空间中值.
SpatialMedian[data]
给出几种格式不同的 data 的空间中值.
SpatialMedian
SpatialMedian[{x1,x2,…}]
给出元素
的空间中值.
SpatialMedian[data]
给出几种格式不同的 data 的空间中值.
更多信息和选项
- SpatialMedian 亦称为几何中值、中值中心和 1-median.
- SpatialMedian 是稳健的位置度量. 它给出距数据中的点距离总和最小的点.
- 无加权情况下,SpatialMedian 等价于
,加权情况下,等价于
. - 数据 data 可以有下列形式和解释:
-
{x1,x2,…} 单变量数值型数据 {{x1,y1,…},{x2,y2,…},…} 多变量数值型数据 {GeoPosition[…],GeoPosition[…],…} 测地位置列表 GeoPosition[…] 测地位置数组 WeightedData[…] 带有权重的数据 - 如果使用欧式距离,一维情况下,SpatialMedian 与中值相符. 多维情况下,点不共线时空间中值是惟一的.
- 可以给出下列选项:
-
AccuracyGoal Automatic 寻求的准确度 DistanceFunction Automatic 使用的距离度量 MaxIterations Automatic 使用的最大迭代次数 Method Automatic 使用的方法 PrecisionGoal Automatic 寻求的精度 WorkingPrecision Automatic 内部计算中使用的精度 - 缺省情况下,下列距离函数被用于不同类型的元素:
-
EuclideanDistance 数值型数据 GeoDistance 地理空间数据 - 设置 Method{"InitialPoint"{x0,y0,…}} 允许自定义初值来计算 SpatialMedian.
范例
打开所有单元 关闭所有单元基本范例 (3)
SpatialMedian[{{1., 3., 5.}, {7., 1., 2.}, {9., 3., 1.}, {4., 5., 6.}}]SpatialMedian[WeightedData[{{1., 3., 5.}, {-4., 1., 2.}, {3., 3., 1.}, {4., 5., 6.}}, {1., 3., 4., 5.}]]cities = {Entity["City", {"Cambridge", "Cambridgeshire", "UnitedKingdom"}], Entity["City", {"Oxford", "Oxfordshire", "UnitedKingdom"}], Entity["City", {"London", "GreaterLondon", "UnitedKingdom"}]};sm = SpatialMedian[GeoPosition[cities]]GeoGraphics[{GeoMarker[cities, Blue], GeoMarker[sm, Red]}]范围 (5)
data = {{1, 2, 3, 4}, {8, 7, 6, 5}, {9, 4, 1, 3}};SpatialMedian[N[data]]SpatialMedian[N[data, 30]]可以用来求 WeightedData 的空间中值:
wd = WeightedData[{{1., 3.}, {-4., 2.}, {3., 1.}, {5., 6.}}, {1., 3., 4., 5.}];SpatialMedian[wd]data = RandomReal[1, {10 ^ 6, 3}];SpatialMedian[data]weights = RandomReal[1, 10 ^ 6];SpatialMedian[WeightedData[data, weights]]data = Quantity[RandomReal[1, {6, 2}], "Meters"]SpatialMedian[data]cities = {Entity["City", {"Paris", "IleDeFrance", "France"}], Entity["City", {"Sydney", "NewSouthWales", "Australia"}], Entity["City", {"Boston", "Massachusetts", "UnitedStates"}], Entity["City", {"SanFrancisco", "California", "UnitedStates"}], Entity["City", {"Tokyo", "Tokyo", "Japan"}]};median = SpatialMedian[GeoPosition[cities]]GeoGraphics[{GeoMarker[cities, Blue], GeoMarker[median, Red]}, GeoProjection -> {"AzimuthalEquidistant", "Centering" -> median}]选项 (4)
DistanceFunction (2)
缺省情况下,对数值型数据使用 EuclideanDistance:
data = {{1.5, 3.}, {2.6, 4.}, {9.2, 5.}, {7.3, -5.}};SpatialMedian[data]ChessboardDistance 只考虑考虑具有最大间隔的维度:
SpatialMedian[data, DistanceFunction -> ChessboardDistance]可用符号给出 DistanceFunction:
dist[{u_, v_}, {x_, y_}] := Sqrt[3(u - x) ^ 2 + 2(v - y) ^ 2]data = {{1.5, .6}, {2, 0}, {1.25, 1.25}, {3., 0.3}};SpatialMedian[data, DistanceFunction -> dist]dist1 = Sqrt[{3, 2}.(#1 - #2) ^ 2]&;SpatialMedian[data, DistanceFunction -> dist1]Method (2)
data = {{-0.5835, -0.6525}, {-0.487, 0.4963}, {-0.4353, -0.319}, {-0.01874, 0.07936}, {0.466, -0.7498}};SpatialMedian[data, Method -> {"InitialPoint" -> {0., 0.}}]可以使用 FindMinimum 的"NMinimize" 和 method 选项:
data = {{1.5, 3.}, {2.6, 4.}, {9.2, 5.}, {7.3, -5.}};SpatialMedian[data, Method -> "NMinimize"]指定 DistanceFunction:
SpatialMedian[data, DistanceFunction -> BrayCurtisDistance, Method -> "NMinimize"]SpatialMedian[data, DistanceFunction -> BrayCurtisDistance, Method -> {"NMinimize", Method -> "RandomSearch"}]SpatialMedian[data, DistanceFunction -> BrayCurtisDistance, Method -> "PrincipalAxis"]应用 (8)
data = {{3., -5.}, {2., -5.}, {0., 2.}, {-4., -3.}, {10 ^ 8, -1.}, {8., -20000.}};SpatialMedian[data]极值对 Mean 有很大的影响:
Mean[data]dist = MixtureDistribution[{0.98, 0.02}, {BinormalDistribution[0], BinormalDistribution[{0, 0}, {1000, 1000}, 0.5]}];BlockRandom[SeedRandom[1];
data = RandomVariate[dist, 10 ^ 3];]Histogram3D[data, PlotTheme -> "Detailed"]用 Mean 估计中心:
Mean[data]对于非高斯分布数据,样本均值估计量有较大的展布. 估计量的标准偏差为:
StandardDeviation[dist] / Sqrt[Length[data]]用 SpatialMedian 估计中心:
SpatialMedian[data]StandardDeviation[Table[SpatialMedian[RandomChoice[data, 10 ^ 3]], {10 ^ 3}]]考虑五个公司的股票价格:把 2015 年 GOOG、MSFT、FB、AAPL 和 INTC 的价格作为五维数据:
prices = TemporalData[TimeSeries, {{{{524.812404, 44.604322, 78.449997, 105.158716, 34.170616},
{513.872306, 44.194149, 77.190002, 102.196226, 33.785304}, {501.962262, 43.545497, 76.150002,
102.205846, 33.155645}, {501.102268, 44.098757, 76.15000 ...
3659385600, 3659644800, 3659731200, 3659817600, 3659904000, 3660249600, 3660336000,
3660422400, 3660508800}}}, 1, {"Continuous", 1}, {"Discrete", 1}, 5,
{ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}}, True, 11.1];prices["ValueDimensions"]DateListPlot[prices, PlotLegends -> {"GOOG", "MSFT", "FB", "AAPL", "INTC"}]计算对数收益率并用 Mean 和 SpatialMedian 估计中心:
logreturns = Differences[Log[prices["Values"]]];mean = Mean[logreturns]smed = SpatialMedian[logreturns]用 MultivariateTDistribution 拟合数据并提取位置参数:
edist = EstimatedDistribution[logreturns, MultivariateTDistribution[Array[x, 5], Array[s, {5, 5}], nu]];locs = First[edist]空间中值估计量对多变量 t 分布的位置参数给出的估计要比用股票数据得出的经验均值更接近:
EuclideanDistance[locs, mean] > EuclideanDistance[locs, smed]如果数据点的数量等于 3,空间中值也就是 Fermat 点:
data = {{5, -1}, {1, 3}, {-3, -2}};
fermatpoint = SpatialMedian[data]pts = data + (Differences[Append[data, First[data]]].RotationMatrix[Pi / 3]);
triangles = Triangle /@ MapThread[Append, {Delete[data, #]& /@ {3, 1, 2}, pts}];用几何方法构建 Fermat 点并与 SpatialMedian(红色)的结果相比较:
Graphics[{Yellow, Triangle[data], GrayLevel[.75], triangles, Black, Line /@ Transpose[{pts, data[[{3, 1, 2}]]}], Black, PointSize[Large], Point[Join[data, pts]], PointSize[0.03], Red, Point[fermatpoint]}]poly = Polygon[{{2., -5.}, {0., 2.}, {-4., -3.}, {-5, -7}}];
pts = RandomPoint[poly, 10 ^ 3];Graphics[{Lighter[Blue, .9], poly, Black, PointSize[Small], Point[pts]}]smed = SpatialMedian[pts]Graphics[{Lighter[Blue, .9], poly, Black, PointSize[Small], Point[pts], PointSize[0.06], Red, Point[smed]}]cities = CityData[{All, "California"}];
locations = GeoPosition[CityData[#, "Coordinates"]& /@ cities];unweighted = SpatialMedian[locations]populations = CityData[#, "Population"]& /@ cities;weighted = SpatialMedian[WeightedData[locations, populations]]画出城市的位置(灰色),未加权的空间中值(红色)和加权的空间中值(黑色):
legend = PointLegend[{Red, Black}, {"unweighted spatial median", "spatial median weighted by population"}, LegendMarkerSize -> Large];Legended[GeoGraphics[{EdgeForm[Black], FaceForm[Orange], Polygon[Entity["AdministrativeDivision", {"California", "UnitedStates"}]], GrayLevel[.4], PointSize[0.0075], Point[locations], Red, PointSize[0.04], Point[unweighted], Black, Point[weighted]}, GeoRange -> {{32, 43}, {-125, -114}}, ImageSize -> 350], Placed[legend, "Bottom"]]对于地球表面相距甚远的地理位置,空间中值很大程度上依赖于距离函数的选取:
cities = {Entity["City", {"Champaign", "Illinois", "UnitedStates"}], Entity["City", {"Boston", "Massachusetts", "UnitedStates"}], Entity["City", {"Oxford", "Oxfordshire", "UnitedKingdom"}], Entity["City", {"Tokyo", "Tokyo", "Japan"}], Entity["City", {"Linkoping", "Ostergotland", "Sweden"}], Entity["City", {"Lima", "Lima", "Peru"}], Entity["City", {"Bengaluru", "Karnataka", "India"}]};geopos = GeoPosition[cities]选取 GeoPosition 时的空间中值:
geoMedian = SpatialMedian[geopos]选取 EuclideanDistance 时投影坐标的空间中值:
euclidMedian = SpatialMedian[QuantityMagnitude@LatitudeLongitude[geopos]]legend = SwatchLegend[{Gray, Red, Blue}, {"Cities", "SpatialMedian", "EuclideanMedian"}];Legended[GeoGraphics[MapThread[GeoMarker[#1, #2]&, {{geopos, geoMedian, euclidMedian}, {Gray, Red, Blue}}]], legend]可以用均匀抽样的地理位置的空间中值来近似地理实体的中心. 获取西班牙的边界形状:
region = Entity["Country", "Spain"];points = RandomGeoPosition[region, 10000];med = SpatialMedian[points]centralcity = GeoNearest["City", med]//FirstGeoGraphics[{Polygon[Entity["Country", "Spain"]], GeoMarker[med, Green], GeoMarker[centralcity, Red]}, GeoProjection -> "Mercator"]属性和关系 (5)
SpatialMedian 是多变量位置度量:
pts = {{3, -5}, {2, -5}, {0, 2}, {-4, -3}, {-3, 2}, {-5, -5}, {-1, -5}, {-1, -5}, {5, -1}, {-3, 3}, {10, -1}, {8, -2}};Graphics[{PointSize[0.03], StandardGray, Point[pts]}]spmed = SpatialMedian[pts]Mean 也是一种位置度量:
mean = Mean[N@pts]Graphics[{PointSize[0.03], StandardGray, Point[pts], Red, PointSize[0.04], Point[spmed], Blue, Point[mean], Black, Text["Spatial Median", spmed - {0, .8}], Text["Mean", mean + {0, .8}]}, ImageSize -> 250]SpatialMedian 是空间点的 L1 位置估计量:
data = {{1., 3.}, {4., 6.}, {9., 2.}, {5., 5.}, {7., -2.}};spmed = SpatialMedian[data]用 FindMinimum 根据定义计算 SpatialMedian:
sumofdists[x_, y_] := Total[Sqrt[Total[(Transpose[data] - {x, y}) ^ 2]]]Quiet@FindMinimum[sumofdists[x, y], {{x, 5}, {y, 5}}]ContourPlot[sumofdists[x, y], {x, 0, 10}, {y, -3, 7}, PlotLegends -> Automatic, Contours -> 10, Epilog -> {PointSize[Large], Black, Point[data], Red, PointSize[Large], Point[spmed], White, Text["Spatial Median", spmed + {0, -.7}]}]Mean (或空间均值)是空间点的 L2 位置估计量:
mean = Mean[data]用 FindMinimum 根据定义计算 Mean:
sumofsquare[x_, y_] := Total[Total[(Transpose[data] - {x, y}) ^ 2]]Quiet@FindMinimum[sumofsquare[x, y], {{x, 5}, {y, 5}}]ContourPlot[sumofsquare[x, y], {x, 0, 10}, {y, -3, 7}, PlotLegends -> Automatic, Contours -> 10, Epilog -> {PointSize[Large], Black, Point[data], Red, PointSize[Large], Point[mean], White, Text["Mean", mean + {0, -.7}]}]对于单变量数据,SpatialMedian 和 Median 相同:
data = {1, 10, 3, 5, 6, -4};
SpatialMedian[data] == Median[data]data = WeightedData[{1, 10, 3, 5, 6, -4}, {1, 2, 3, 4, 5, 6}];
SpatialMedian[data] == Median[data]用 ManhattanDistance 算出的多变量数据的SpatialMedian 和 Median 相同:
data = {{1.5, 3.}, {2.6, 4.}, {9.2, 5.}, {7.3, -5.}};SpatialMedian[data, DistanceFunction -> ManhattanDistance]Median[data]SpatialMedian 找出域中最小化距离和的点:
data = RandomVariate[NormalDistribution[], {10, 3}];MemberQ[data, SpatialMedian[data]]CentralFeature 找出数据中最小化距离和的点:
MemberQ[data, CentralFeature[data]]相对于 CentralFeature 的距离和要大于或等于相对于 SpatialMedian 的距离和:
sumofdists = Total[Sqrt[Total[(Transpose[data] - #) ^ 2]]]&;sumofdists[CentralFeature[data]] ≥ sumofdists[SpatialMedian[data]]文本
Wolfram Research (2017),SpatialMedian,Wolfram 语言函数,https://reference.wolfram.com/language/ref/SpatialMedian.html.
CMS
Wolfram 语言. 2017. "SpatialMedian." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/SpatialMedian.html.
APA
Wolfram 语言. (2017). SpatialMedian. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/SpatialMedian.html 年
BibTeX
@misc{reference.wolfram_2026_spatialmedian, author="Wolfram Research", title="{SpatialMedian}", year="2017", howpublished="\url{https://reference.wolfram.com/language/ref/SpatialMedian.html}", note=[Accessed: 03-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_spatialmedian, organization={Wolfram Research}, title={SpatialMedian}, year={2017}, url={https://reference.wolfram.com/language/ref/SpatialMedian.html}, note=[Accessed: 03-November-2026]}