Более

Можно ли объединить два разных набора данных в QGIS?

Можно ли объединить два разных набора данных в QGIS?


У меня есть один набор данных, содержащий все федеральные земли Германии. Другой набор данных касается плотности населения на каждый км² в ЕС.

Моя цель теперь объединить эти два набора данных, чтобы я мог ответить на разные вопросы, например: «Сколько км² с населением более 5000 человек находится в федеральной земле x?»

Первый набор данных выглядит так:

а второй вот так:

.

Я очень новичок в программах ГИС, но, исходя из моей интуиции, это звучит как очень простая необходимость объединить разные наборы данных, чтобы ответить на вопрос.


Я предполагаю, что ваш набор данных о плотности населения - это набор данных сетки GEOSTAT от Евростата. Я уже работал с ним, поэтому могу дать вам основные шаги.

Во-первых, ваш набор данных GEOSTAT должен иметь шейп-файл (для меня он называетсяGrid_ETRS89_…). Вам необходимо импортировать в QGIS как этот шейп-файл, так и.csvфайл, содержащий данные о населении.

Затем вы должны выполнить соединение между этими двумя файлами, чтобы связать информацию о населении с пространственной информацией. Присоединение будет выполнено в поле «КОД» вашего.csv.

После этого (при условии, что ваш набор данных Länder имеет те же данные, что и набор данных Eurostat), вам просто нужно будет использовать такой инструмент, как Intersect (в Vector> Geoprocessing), чтобы выбрать все квадраты 1 км² внутри конкретной земли.


Какой тип данных "поле"? В одном примере вы сравниваете значение «field» с ЧИСЛОВЫМ значением 1, а в другом - со строкой «1», то есть односимвольной строкой, содержащей текст «1». Это не обязательно одно и то же. [Изменить: я забыл о MySql ENUM, прошло некоторое время с тех пор, как я активно использовал MySql, поэтому для этого конкретного случая, что сказал Kenny TM =)]

Не видя набора данных, который вы используете, и определения таблицы (для просмотра типов данных), а также конкретной версии MySql, которую вы используете, я не могу дать лучшего ответа, чем это. Но это сводится к тому, что два запроса, которые вы выполняете, хотя и выглядят одинаково, но на самом деле разные.


Версия CASE.

Это потому, что есть большая вероятность, что вы изменяете одну и ту же строку более одного раза с отдельными операторами. Если в строке 10 есть как condition_1, так и condition_y, то ее нужно будет прочитать и изменить дважды. Если у вас есть кластеризованный индекс, это означает два обновления кластерного индекса поверх любых других полей, которые были изменены.

Если вы можете сделать это как один оператор, каждая строка будет прочитана только один раз, и она должна выполняться намного быстрее.

Я изменил аналогичный процесс около года назад, в котором последовательно использовались десятки операторов UPDATE, чтобы использовать с момента UPDATE с CASE, и время обработки упало примерно на 80%.

Мне кажется логичным, что при первом варианте SQL Server будет просматривать таблицу только один раз и для каждой строки он будет оценивать условие.

На втором - 4 раза пройти всю таблицу.

Итак, для таблицы с 1000 строками в первом варианте в лучшем случае мы говорим о 1000 оценок, а в худшем - 3000. Во втором у нас всегда будет 4000 оценок.


Вы делаете масштабирование функций для ускорения процесса обучения. Возможности могут иметь разные масштабы. Один может быть от 1 до 10, а другой может быть от -100 до 1000. Используя нормализацию, вы делаете их одинаковыми, что помогает ускорить процесс обучения. Вы должны найти среднее значение и дисперсию для каждой функции отдельно в своих тренировочных данных. затем во время обучения и тестирования каждая функция должна быть уменьшена на соответствующее среднее значение и разделена на соответствующее стандартное отклонение. Итак, да, для каждой функции во время тестирования и обучения вы должны предоставить те же значения для среднего и стандартного, которые получены с использованием данных обучения. Предлагаю вам взглянуть сюда.

Основная причина использования статистики, вычисляемой только на обучающем наборе, состоит в том, чтобы избежать утечки информации из набора тестов.

Если это не проблема, то можно использовать статистику из всего набора данных.

См. Здесь для дальнейшего обсуждения.

При масштабировании (или Z-преобразовании) вам нужны среднее значение и дисперсия, которые должны исходить из общих данных.

Более того, если ваша модель будет использоваться для будущих данных, то это среднее значение и дисперсия должны применяться и к новым данным, а не к среднему значению или дисперсии новых данных.

Одно из важных предположений при моделировании состоит в том, что функция / шаблон при обучении будет одинаковым или аналогичным в наборе для тестирования. Это основа, на которой мы можем использовать исторические данные для предсказания будущего.

Следовательно, это требует согласованности в отображении значений на другие с помощью одной функции преобразования. Различные наборы среднего и дисперсии приведут к разным преобразованиям.

Аргумент предотвращения утечки информации в новые данные за счет использования статистики обучающих данных (среднего, стандартного отклонения) для нормализации кажется нелогичным, потому что вставка обучающего среднего и стандартного отклонения в новые данные IS утечка информации из обучающих данных в новые данные.

Статистически эта процедура «вынуждает» присоединение новых данных к обучающей совокупности, что не обязательно должно быть верным во всех случаях: прогнозирование также является проверкой стационарности основных процессов.

Например, статистические t-тесты для средних различий используют статистику каждой группы, поэтому возможность обнаруживать (средние) различия между группами будет сложно (тест будет иметь меньшую мощность), если объединить (или только одну из групповых) статистику. будет использоваться вместо этого.

Я думаю, что текущая практика пытается уменьшить ошибку предсказания за счет «перетекания» информации из обучающего набора в новый набор.


2 ответа 2

Вы можете использовать взвешенную регрессию для достижения своей цели. Помимо данных, для каждого наблюдения дается вес, который указывает, насколько важна ошибка для этого наблюдения. Дополнительная информация и пример здесь: Как использовать веса в функции lm в R?

Получены ли эти два набора данных путем выборки из одной и той же совокупности? И являются ли данные продольными / коррелированными (например, вы снова и снова отбираете образцы у одних и тех же двух лабораторных мышей)? Если два набора данных взяты из одной и той же совокупности, и данные не являются продольными / коррелированными, то, на мой взгляд, можно объединить данные. Вы просто добавляете больше точек данных в свой образец. Разница в домене не является проблемой, если вы действительно хотите смоделировать данные для всего домена.

Но я хочу, чтобы два набора данных были равномерно взвешены в измерении x - то есть, даже если плотность данных вокруг точки $ x = 5 $ для красного набора намного выше по сравнению с черным набором, я бы хотел, чтобы черный указывают на то, чтобы иметь такой же вес, как и красные точки между, скажем, $ x = 4,5 $ и $ x = 5,5 $.

Вы имеете в виду, что хотите, чтобы ОДНА черная точка в $ x = 5 $ равнялась по весу НЕСКОЛЬКИМ красным точкам между $ x = 4.5 $ и $ x = 5.5 $? Мне это кажется странным, потому что вы, по сути, говорите, что доверяете измерениям черного цвета гораздо больше, чем измерениям красного, но если вы используете ту же настройку и ту же популяцию выборки, я не понимаю, почему это должно быть так?


Улучшения безопасности eSIM

Однако, сказав это, я действительно считаю, что физический аспект безопасности действительно улучшается, как упоминалось некоторыми комментаторами, но что значение безопасности незначительно с учетом популярных векторов атак.

  • Поскольку теперь eSIM безопасно хранится в цифровом виде (например, Secure Enclave на устройствах iOS) на устройстве, удаление его для чтения его содержимого должно быть более сложным по сравнению с физическим извлечением его из слота для sim-карты и вставкой в считыватель сим-карт.

Понимание объединения пустого набора с любым набором.

Я знаю, что объединение пустого набора с любым набором дает пустой набор. Итак, $ A circ varnothing = varnothing $. Здесь $ A $ - это набор строк и конкатенация ($ circ $) двух наборов строк, $ X $ и $ Y $ - это набор, состоящий из всех строк вида $ xy $, где $ x in X $ и $ y in Y $. (Вы можете взглянуть на страницу 65, Пример 1.53 «Введение в теорию вычислений» Майкла Сипсера). Однако я несколько озадачиваюсь, когда пытаюсь интуитивно понять это.

А неправильно образ мышления заставит спросить: «Если мы объединим $ A $ с $ varnothing $, не должно ли это все равно быть $ A $?»

Ну, один из способов заставить себя понять правильный ответ, может быть, сказать, что, поскольку я конкатенирую с пустым набором, на самом деле я не смогу выполнить конкатенацию. Конкатенации вообще не будет.

Я прошу помощи у опытных пользователей, чтобы они предоставили подсказки и примеры из реальной жизни, которые помогут изменить процесс мышления и помогут лучше понять правильный ответ. Я уделяю больше внимания примерам из реальной жизни.

Мне нужно это понять. Мне не нравится просто запоминать правильный ответ.


4 ответа 4

Самый простой способ - добавить категориальную переменную $ z $ для идентификации различных экспериментальных условий и включить ее в вашу модель вместе с «взаимодействием» с $ x $, то есть $ y sim z + x # z $. При этом проводятся сразу все пять регрессий. Его $ R ^ 2 $ - это то, что вы хотите.

Чтобы понять, почему усреднение отдельных значений $ R $ может быть неправильным, предположим, что в некоторых экспериментальных условиях направление наклона изменено на противоположное. Вы бы усреднили связку единиц и -1 примерно до 0, что не отражало бы качество любого из подгонок. Чтобы понять, почему усреднение $ R ^ 2 $ (или любое его фиксированное преобразование) неверно, предположим, что в большинстве экспериментальных условий у вас было только два наблюдения, так что их $ R ^ 2 $ все равны $ 1 $, но в одном эксперименте вы было сто наблюдений с $ R ^ 2 = 0 $. Среднее значение $ R ^ 2 $, равное почти 1, неверно отражает ситуацию.

Для коэффициентов корреляции Пирсона обычно целесообразно преобразовать р значения с использованием Фишера z трансформация. Затем усредните z-значения и преобразовать среднее значение обратно в р стоимость.

Я полагаю, что это было бы хорошо и для коэффициента Спирмена.

Средняя корреляция может иметь значение. Также рассмотрите распределение корреляций (например, постройте гистограмму).

Но, насколько я понимаю, для каждого человека у вас есть некоторый рейтинг из $ n $ элементов плюс прогнозируемые рейтинги этих элементов для этого человека, и вы смотрите на корреляцию между рейтингом человека и прогнозируемым.

В этом случае может оказаться, что корреляция не лучший показатель того, насколько хорошо алгоритм делает прогнозы. Например, представьте, что алгоритм получает первые 100 элементов идеально, а следующие 200 элементов полностью испорчены, и наоборот. Возможно, вас волнует только качество первых позиций. В этом случае вы можете посмотреть на сумму абсолютных различий между рейтингом отдельного человека и прогнозируемым рейтингом, но только среди $ m $ лучших пунктов этого человека.


Почему нуль не может быть равен нулю ради соединения?

Просто скажите Oracle сделать это:

(Обратите внимание, что в стандартном SQL вы можете использовать t1.id, неотличимый от t2.id, чтобы получить нулевой безопасный оператор равенства, но Oracle не поддерживает это)

Но это будет работать только в том случае, если значение замены (-1 в приведенном выше примере) фактически не отображается в таблице. Нахождение такого "волшебного" значения для чисел мог возможно, но это будет очень сложно для символьных значений (особенно потому, что Oracle обрабатывает пустую строку как null)

Плюс: индекс по столбцам id не будет использоваться (вы мог тем не менее, определите индекс на основе функции с помощью выражения coalesce ()).

Другой вариант, который работает для всех типов, без магических значений:

Но реальный вопрос: Имеет ли это смысл?

Рассмотрим следующие образцы данных:

Какое из сочетаний нулевых значений следует выбрать в объединении? Мой пример выше приведет к чему-то вроде перекрестного соединения для всех нулевых значений.


Вам нужно будет точно указать, что вы имеете в виду под словом «другой». Вам также необходимо указать, какие предположения вы хотите сделать относительно структуры последовательной корреляции в пределах каждого временного ряда.

С помощью t-критериев вы сравниваете иметь в виду каждой группы, и вы предполагаете, что группы состоят из независимых наблюдений с равной дисперсией (последняя иногда ослабляется). При тестировании временных рядов предположение о независимости обычно неразумно, но тогда вам необходимо заменить его определенной структурой корреляции - например, вы можете предположить, что временной ряд следует процессам AR (1) с одинаковой автокорреляцией. Следовательно, даже сравнение средних значений двух или более временных рядов значительно труднее, чем с независимыми данными.

Я бы тщательно уточнил, какие предположения я хотел бы сделать по каждому временному ряду и что я хотел бы сравнить, а затем использовал параметрический бутстрап (на основе предполагаемой модели) для проведения теста.