Фокальная статистика выполняет операции, которые вычисляют статистику для входных ячеек в фиксированном наборе перекрывающихся окон или окрестностей. Статистика (например, максимум, среднее или сумма) вычисляется для всех входных ячеек, содержащихся в каждой окрестности.
Обработка окрестности
Концептуально, алгоритм посещает каждую ячейку растра и рассчитывает заданную статистику для ячеек, которые попадают в окрестность заданной формы вокруг нее. Ячейка, для которой вычисляется статистика, называется обрабатываемой ячейкой. Значение обрабатываемой ячейки обычно включено в вычисление статистики окрестности, но в зависимости от формы окрестности, может и не быть включено. Поскольку окрестности будут перекрываться в процессе сканирования, входные ячейки, которые входят в вычисления для обрабатываемой ячейки, могут также участвовать в вычислении для другой обрабатываемой ячейки.
Имеется несколько предустановленных форм окрестности, доступных для выбора. Также можно создать пользовательскую форму. В окрестности можно вычислить следующие статистические параметры: большинство, максимум, среднее, медиана, минимум, меньшинство, процентиль, диапазон, среднеквадратичное отклонение, сумма и разнообразие.
Пример вычисления
Чтобы проиллюстрировать обработку окрестности инструментом Фокальная статистика, рассмотрим на следующей диаграмме вычисление суммарной статистики окрестности вокруг обрабатываемой ячейки со значением 5. Задаётся окрестность прямоугольной формы размером 3 на 3 ячейки, параметр Игнорировать NoData в вычислениях по умолчанию остается включенным остается с настройкой по умолчанию. Сумма значений ячеек окрестности (3 + 2 + 3 + 4 + 2 + 1 + 4 = 19) плюс значение обрабатываемой ячейки (5) равняется 24 (19 + 5 = 24). Значение 24 дается ячейке выходного растра в том же местоположении, что и обрабатываемая ячейка входного растра.
На диаграмме ниже показано, как выполняются вычисления на одной ячейке входного растра. На следующей диаграмме показаны результаты всех входных ячеек. Выделенные желтым ячейки определяют ту же обрабатываемую ячейку и окрестность, как в примере выше.
Ячейки NoData
Параметр Игнорировать значение NoData при вычислениях определяет, как в окне окрестности обрабатываются ячейки со значением NoData. Если этот параметр включен (ignore_nodata = "DATA" в Python) любые ячейки NoData в окрестности будут игнорироваться в вычислениях выходного значения обрабатываемой ячейки. Когда параметр не включен (ignore_nodata = "NODATA" в Python), если какая-либо ячейка в окрестности содержит NoData, выходным значением для обрабатываемой ячейки будет значение NoData.
Если обрабатываемая ячейка имеет значение NoData и при этом включена опция Игнорировать NoData при вычислениях, выходное значение ячейки будет рассчитываться на основании значений других ячеек окрестности, имеющих допустимые значения. Если все ячейки в окрестности – NoData, выходное значение будет NoData.
Угловые ячейки и ячейки на ребрах
Если обрабатываемые ячейки во входном растре находятся рядом с углами и ребрами, число ячеек, включаемых в окрестность соответственно меняется. Расчет статистики также корректируется.
Следующие диаграммы показывают, как выходная статистика рассчитывается для каждой обрабатываемой ячейки из доступных ячеек для каждой отдельной окрестности. Обработка начинается в верхнем левом углу входного растра и сканирование происходит слева направо по каждой строке, прежде, чем обрабатывать следующую строку. Окрестность, используемая в этом примере, прямоугольник 3 на 3 ячейки, а вычисляемая статистика – сумма. Параметр Игнорировать NoData в вычислениях остается с настройкой по умолчанию. На диаграммах окрестность оконтурена желтым, а обрабатываемая ячейка – голубым.
Первая обрабатываемая ячейка находится в верхнем левом углу входного растра 6 на 6 ячеек, поэтому для окрестности доступно только 4 ячейки. Совместное добавление этих значений приводит к тому, что первой ячейке будет присвоено выходное значение 11. Для следующей справа ячейки в окрестности теперь находится шесть ячеек, сумма вычисляется для них. Сканирование выполняется по всем ячейкам в первой строке. Чтобы сохранить место, показаны не все обрабатываемые ячейки.
Обратите внимание, что в первой строке для третьей слева обрабатываемой ячейки (значение = 1) одна из входных ячеек имеет значение NoData. Поскольку для инструмента задано игнорировать NoData, эта ячейка не будет участвовать в вычислении. Если вычисляемую статистику задать на Среднее вместо Суммы, она бы вычислялась как сумма всех ячеек в окрестности, которые не имеют значение NoData, деленная на 5.
Во второй строке входных ячеек статистика для первой обрабатываемой ячейки будет вычислена на основании имеющихся шести ячеек в окрестности. Для следующей обрабатываемой ячейки здесь будет девять ячеек, учитываемых в вычислении. Для последующей ячейки в вычислениях будет участвовать восемь входных ячеек, так как одна из ячеек в окрестности 3 на 3 имеет значение NoData. Обработка продолжается для оставшихся ячеек в строке, а затем переходит на следующие строки, пока не будут проанализированы все обрабатываемые ячейки.
Размер окрестности и производительность
Инструмент может обрабатывать очень большие окрестности. Однако увеличение размера окрестности понижает производительность, поскольку в каждое вычисление включается большее число ячеек. В прямоугольной окрестности применяется оптимизация, позволяющая повысить производительность относительно других форм окрестностей в данной области.
Максимальный размер по любому измерению окрестности ограничен 4096 ячейками. Это означает, что прямоугольная окрестность не может быть больше этого числа ячеек по горизонтали или вертикали. Для круглых окрестностей, радиус не может быть больше 2047.
Типы окрестностей
Окрестность может быть в форме кольца, окружности, прямоугольника или клина. Используя керн-файл, вы можете определить пользовательскую форму окрестности, а также присвоить различные веса конкретной ячейке в окрестности до вычисления статистики.
Ниже рассматриваются различные формы окрестности и то, как они определяются:
- Кольцо
- Форма плоского кольца состоит из двух окружностей, одно внутри другого, формирующих форму бублика. В обрабатываемую окрестность будут включены ячейки, центры которых попадают за пределы круга меньшего радиуса, но внутрь круга большего радиуса. Область между двумя окружностями становится кольцевой окрестностью.
- Радиус определяется в ячейках или единицах карты и измеряется перпендикулярно оси x или оси y. Если радиусы указаны в единицах карты, то они конвертируются в единицы ячеек. Итоговый радиус в единицах ячеек задаёт область, которая наиболее точно определит область, вычисленную с помощью исходного радиуса в единицах карты. Все ячейки, центры которых попадают между окружностями, будут включены в обрабатываемую окрестность.
- Окружность кольца по умолчанию – внутренний радиус одной ячейки и внешний радиус трех ячеек.
- Пример вычисления кольцевой окрестности:
- Окружность
- Окрестность в форме круга задаётся значением радиуса.
- Радиус определяется в единицах ячеек или карты и измеряется перпендикулярно оси x или оси y. Если радиус задан в единицах карты, применяется дополнительная логика, чтобы определить ячейки, задействованные в обрабатываемой окрестности. Сначала рассчитывается точная площадь круга, определенного заданным значением радиуса. Затем определяется площадь для двух дополнительных кругов, причем в одном случае значение заданного радиуса округляется в меньшую сторону, а в другом – в большую сторону. Эти две площади сопоставляются с величиной, полученной для заданного радиуса, и выбирается радиус, для которого получен более близкий результат.
- По умолчанию радиус окрестности круга равен 3 ячейкам.
- Пример вычисления окрестности круга:
- Прямоугольник
- Окрестность в форме прямоугольника задается путем указания ширины и высоты в ячейках или единицах измерения карты.
- В обработку окрестности в форме прямоугольника будут включены только те ячейки, чей центр попадает в заданный объект.
- По умолчанию прямоугольная окрестность является квадратом со стороной, равной трем ячейкам.
- Положение x,y для обрабатываемой ячейки в пределах окрестности, по отношению к верхнему левому углу окрестности, определяется следующими уравнениями:
x = (ширина окрестности + 1)/2 y = (высота окрестности + 1)/2
Если число входных ячеек четное, координаты x,y округляются в меньшую сторону. Например, при использовании окрестности 5 на 5 ячеек, значения x и y будут равны 3,3. При использовании окрестности 4 на 4 ячейки значения x и y будут равны 2,2.
- Далее приведены примеры иллюстраций двух прямоугольных окрестностей:
- Клин
- Клин – это окрестность в форме клина, определяемая радиусом, начальным и конечным углами.
- Клин строится в направлении против часовой стрелки от начального угла до конечного угла. Углы задаются в арифметических градусах от 0 до 360, где 0 находится на положительной x-оси (3:00 часа), и могут быть как целочисленными, так и с плавающей точкой. Могут использоваться отрицательные значения углов.
- Радиус определяется в ячейках или единицах карты и измеряется перпендикулярно оси x или оси y. Если радиус указан в единицах карты, то они конвертируются в единицы ячеек. Итоговый радиус в единицах ячеек задаёт область, которая наиболее точно представляет область, определенную ранее в единицах карты. Все ячейки, центры которых попадают в клин, будут включены в обрабатываемую окрестность.
- Клиновидная окрестность по умолчанию имеет углы от 0 до 90 градусов, с радиусом, равным трем ячейкам.
- Пример вычисления клиновидной окрестности:
- Неправильная
- Это позволяет указать окрестность неправильной формы вокруг обрабатываемой ячейки.
- То, какие ячейки будут включены в окрестность, определяет керн-файл для окрестности неправильной формы.
- Положение x,y для обрабатываемой ячейки в пределах окрестности, по отношению к верхнему левому углу окрестности, определяется следующими уравнениями:
x = (ширина + 1)/2 y = (высота + 1)/2
Если число входных ячеек четное, координаты x,y округляются в меньшую сторону.
- Описанное ниже применяется к керн-файлу для окрестности неправильной формы:
- Керн-файл для окрестности неправильной формы представляет собой текстовый файл ASCII, который определяет значения и форму окрестности неправильной формы. Файл можно создать с помощью любого текстового редактора. У файла должно быть расширение .txt и не должно быть пробелов в имени.
- Первая строка задаёт ширину высоту окрестности (количество ячеек в направлении x, затем пробел, затем количество ячеек в направлении y).
- Последующие строки определяют значение для каждого положения в окрестности, которую они представляют. Пробел между значениями является обязательным.
- Значение определяет, будет ли положение в окрестности включено в вычисление. Как правило, для идентификации положений, включаемых в вычисления окрестности нерегулярной формы используется значение 1, но можно использовать любое положительное или отрицательное значение, отличное от 0. Значение может быть и с плавающей точкой.
- Для исключения местоположения в окрестности из вычислений, используйте для соответствующего местоположения в керн-файле значение, равное 0 (но не пустое).
- Следующий пример показывает содержание нерегулярного керн-файла и окрестности, которую он описывает:
- Вес
- Так же как и с окрестностью неправильной формы, взвешенная окрестность позволяет задавать вокруг обрабатываемой ячейки окрестности неправильной формы, но также позволяет применять к входным значениям веса.
- Керн-файл весов задает, какие ячейки будут включены в окрестность, а также веса, на которые будут умножены значения ячеек.
- Взвешенная окрестность может использоваться только для статистики: среднее, Среднеквадратическое отклонение и сумма.
- Положение x,y для обрабатываемой ячейки в пределах окрестности, по отношению к верхнему левому углу окрестности, определяется следующими уравнениями:
x = (ширина + 1)/2 y = (высота + 1)/2
Если число входных ячеек четное, координаты x,y округляются в меньшую сторону.
- Для файла ядра для взвешенной окрестности применяется следующее:
- Керн-файл для окрестности типа Вес представляет собой текстовой ASCII-файл формата, который определяет значения и форму окрестности "Вес". Файл можно создать с помощью любого текстового редактора. У файла должно быть расширение .txt и не должно быть пробелов в имени.
- Первая строка задаёт ширину высоту окрестности (количество ячеек в направлении x, затем пробел, затем количество ячеек в направлении y).
- Последующие строки определяют значение для каждого положения в окрестности, которую они представляют. Пробел между значениями является обязательным.
- Для суммарной статистики вес указываться как положительное или отрицательное целочисленное значение или значение с плавающей точкой.
- Для статистик - среднее и среднеквадратическое отклонение - вес указываться как любое положительное целочисленное значение или значение с плавающей точкой. Отрицательные значения не допустимы для этих типов статистики, поэтому любое положение с отрицательным весом будет игнорироваться в вычислениях.
- Для исключения местоположения в окрестности из вычислений, используйте для соответствующего местоположения в керн-файле значение, равное 0 (но не пустое).
- Следующий пример показывает содержание керн-файла весов и окрестности, которую он описывает:
Типы статистики
Доступная статистика: Большинство, Максимум, Среднее, Медиана, Минимум, Меньшинство, Процентиль, Диапазон, Среднеквадратическое отклонение, Сумма и Разнообразие. Тип статистики, используемый по умолчанию – Среднее.
Определенные типы статистики доступны только для входных растров целочисленного типа.
- Большинство
- Входными данными могут быть только целочисленные растры.
- Определяется частота каждого уникального значения ячейки в окрестности. Если имеется одно значение с максимальной частотой (встречается наиболее часто), это значение присваивается всем ячейкам в этой окрестности. Если имеется связь, присваивается минимальное из связанных значений, если только само значение обрабатываемой ячейки не является одной из связей. В этом случае возвращается исходное значение обрабатываемой ячейки.
- Максимум
- Если входной растр целочисленный, значения на выходном растре будут целочисленными; если значения на входном растре представлены числами с плавающей точкой, значения на выходном растре будут также представлены числами с плавающей точкой.
- Среднее
- Это может быть целочисленный растр или растр с плавающей точкой.
- Выходной растр всегда будет представлен числами с плавающей точкой.
- Для типа Взвешенная окрестность это один из поддерживаемых поднаборов типов статистики. См. раздел Взвешенная окрестность для подробной информации о том, как вычисляется статистика.
- Медиана
- Это может быть целочисленный растр или растр с плавающей точкой.
- Выходной растр всегда будет представлен числами с плавающей точкой.
- Когда количество действительных значений ячеек в окрестности нечетное, значение медианы вычисляется путем ранжирования значений и выбора среднего значения. Если число значений в окрестности четное, значения ранжируются, и находится среднее для двух срединных значений.
- Минимум
- Если входной растр целочисленный, значения на выходном растре будут целочисленными; если значения на входном растре представлены числами с плавающей точкой, значения на выходном растре будут также представлены числами с плавающей точкой.
- Меньшинство
- Входными данными могут быть только целочисленные растры.
- Определяется частота каждого уникального значения ячейки в окрестности. Если имеется одно значение с минимальной частотой (встречается наименее часто), это значение присваивается всем ячейкам в этой окрестности. Если имеется связь, присваивается минимальное из связанных значений, если только само значение обрабатываемой ячейки не является одной из связей. В этом случае возвращается исходное значение обрабатываемой ячейки.
- Процентиль
- Это может быть целочисленный растр или растр с плавающей точкой.
- Выходной растр всегда будет представлен числами с плавающей точкой.
- Результат статистики процентиля вычисляется по следующей формуле (Hyndman and Fan, 1996):
pk = (k-1)/(n-1)
- Диапазон
- Если входной растр целочисленный, значения на выходном растре будут целочисленными; если значения на входном растре представлены числами с плавающей точкой, значения на выходном растре будут также представлены числами с плавающей точкой.
- Значения для местоположения каждой ячейки на выходном растре определяются по принципу "ячейка-за-ячейкой" путём применения простой формулы: Focal Range = Focal Maximum – Focal Minimum
- Среднеквадратическое отклонение
- Выходной растр всегда будет представлен числами с плавающей точкой.
- Для типа Взвешенная окрестность это один из поддерживаемых поднаборов типов статистики. См. раздел Взвешенная окрестность для подробной информации о том, как вычисляется статистика.
- Среднеквадратическое отклонение вычислено для всей популяции (метод N), а не для выборки (метод N-1).
- Сумма
- Если входной растр целочисленный, значения на выходном растре будут целочисленными; если значения на входном растре представлены числами с плавающей точкой, значения на выходном растре будут также представлены числами с плавающей точкой.
- Для типа Взвешенная окрестность это один из поддерживаемых поднаборов типов статистики. См. раздел Взвешенная окрестность для подробной информации о том, как вычисляется статистика.
- Разнообразие
- Входными данными могут быть только целочисленные растры.
Вычисление взвешенной окрестности
Степень влияния каждого значения окрестности на итоговый результат обрабатываемой ячейки может настраиваться с помощью весов.
В следующих разделах показаны формулы, используемые для вычисления взвешенного среднего, стандартного отклонения и суммарной статистики. К каждому случаю приводится пример, где показано вычисление обрабатываемой ячейки с прямоугольной окрестностью 3 х 3.
Статистика Взвешенное среднее
Для взвешенной окрестности со статистикой Среднее выходное значение для центральной ячейки является суммой значений весов ядра, умноженной на входное значение, деленное на сумму значений весов ядра.
Формула применяется к ячейкам, находящихся в пределах окрестности, как описано ниже:
Где:
- µW взвешенное среднее значение совокупности для обрабатываемой ячейки.
- N – число ячеек в окрестности.
- wi – значение веса, определенное для ядра.
- xi – входное значение ячейки.
Прежние версии:
В предыдущих версиях, в вычислениях использовалось число ячеек как знаменатель.
Значения весов должны быть положительными, и могут быть как целочисленными, так и с плавающей точкой.
Пример
Рассмотрим обрабатываемую ячейку со значением 7 и восемь ячеек окрестности:
4 6 7 6 7 8 4 5 6
Математическое среднее (сумма / количество) для этих значений: 53 / 9 = 5.889.
Допустим, у нас взвешенное ядро ячеек 3 x 3:
3 3 0.0 0.5 0.0 0.5 2.0 0.5 0.0 0.5 0.0
Это ядро дает максимальную степень влияния на центральную ячейку (вес 2), уменьшая влияние четырех диагональных ячеек (вес 0.5), и делает четыре угловые ячейки не оказывающими влияния (вес 0).
Применение уравнения взвешенного среднего, показанного выше, позволяет получить итоговое значение следующим способом:
= (w1x1 + w2x2 + w3x3 + w4x4 + w5x5 + w6x6 + w7x7 + w8x8 + w9x9) / (w1 + w2 + w3 + w4 + w5 + w6 + w7 + w8 + w9) = ((0*4)+(0.5*6)+(0*7)+(0.5*6)+(2.0*7)+(0.5*8)+(0*4)+(0.5*5)+(0*6)) / (0 + 0.5 + 0 + 0.5 + 2.0 + 0.5 + 0 + 0.5 + 0) = (0 + 3.0 + 0 + 3.0 + 14.0 + 4.0 + 0 + 2.5 + 0) / (0.5 + 0.5 + 2.0 + 0.5 + 0.5) = (3.0 + 3.0 + 14.0 + 4.0 + 2.5) / 4.0 = 26.5 / 4.0 = 6.625
Для сравнения, обычное среднее для девяти входных ячеек равно 5.889. Если в ядро включено только 5 входных ячеек (для которых значение веса не равно 0), но значения весов не рассматриваются, среднее будет равно 6.4 (где 6 + 6 + 7 + 8 + 5 = 32, разделенное на 5).
Статистика Взвешенное стандартное отклонение
Для взвешенной окрестности со стандартным отклонением, выходное значение является результатом следующего выражения:
Где:
- SDW взвешенное значение среднеквадратического отклонения совокупности для обрабатываемой ячейки.
- µW взвешенное среднее значение совокупности для обрабатываемой ячейки.
- N – число ячеек в окрестности.
- wi – значение веса, определенное для ядра.
- xi – входное значение ячейки.
Значения весов должны быть положительными, и могут быть как целочисленными, так и с плавающей точкой.
Если все входные значения окрестности одинаковы, значение стандартного отклонения для обрабатываемой ячейки будут равны 0.
Пример
Значения, использованные в примере взвешенного среднего, снова будут использованы для данного примера.
4 6 7 6 7 8 4 5 6
Также будут использованы такие же значения взвешенного ядра:
3 3 0.0 0.5 0.0 0.5 2.0 0.5 0.0 0.5 0.0
Применение формулы взвешенного стандартного отклонения для центральной ячейки со значением 7 дает результат примерно 0.85696.
Статистика Взвешенная сумма
Для взвешенной окрестности с суммарной статистикой, выходное значение является результатом следующего выражения:
Где:
- SW взвешенное значение суммы совокупности для обрабатываемой ячейки.
- N – число ячеек в окрестности.
- wi – значение веса, определенное для ядра.
- xi – входное значение ячейки.
Значения весов могут быть положительными или отрицательными, как целочисленными, так и с плавающей точкой.
Пример
Рассмотрим следующие входные значения окрестности:
4 6 7 6 7 8 4 5 6
Допустим, у нас взвешенное ядро ячеек 3 x 3:
3 3 -1 -2 -1 0 0 0 1 2 1
Применение показанной выше формулы позволяет получить итоговое значение следующим способом:
= (w1x1 + w2x2 + w3x3 + w4x4 + w5x5 + w6x6 + w7x7 + w8x8 + w9x9) = ((-1*4) + (-2*6) + (-1*7) + (0*6) + (0*7) + (0*8) + (1*4) + (2*5) + (1*6)) = (-4) + (-12) + (-7) + 4 + 10 + 6 = -3
Список литературы
Hyndman, R.J. and Y. Fan, November 1996. "Sample Quantiles in Statistical Packages." The American Statistician 50 (4): 361-365.