Suite

Est-il possible de joindre deux ensembles de données différents dans QGIS ?

Est-il possible de joindre deux ensembles de données différents dans QGIS ?


J'ai un ensemble de données qui contient tous les États fédéraux d'Allemagne. L'autre ensemble de données concerne la densité de population par km² dans l'UE.

Mon objectif est maintenant de rejoindre ces deux ensembles de données afin que je puisse répondre à différentes questions telles que « combien de km² avec plus de 5000 personnes se trouvent dans l'état fédéral x ? »

Le premier ensemble de données ressemble à ceci :

et le deuxième comme ceci :

.

Je suis très nouveau dans les programmes SIG, mais d'après mon intuition, cela ressemble à un besoin très basique de combiner différents ensembles de données afin de répondre à une question.


Je suppose que votre ensemble de données sur la densité de population est l'ensemble de données de la grille GEOSTAT d'Eurostat. J'ai déjà travaillé avec, je peux donc vous donner les principales étapes.

Tout d'abord, votre jeu de données GEOSTAT doit être accompagné d'un fichier de formes (pour moi, il s'appelleGrille_ETRS89_…). Vous devez importer dans QGIS à la fois ce shapefile et le.csvfichier contenant les données de population.

Ensuite, vous devez effectuer une jointure entre ces deux fichiers pour lier les informations de population aux informations spatiales. La jointure se fera sur le champ « CODE » de votre.csv.

Après cela (en supposant que votre jeu de données Länder ait la même référence que le jeu de données Eurostat), vous n'aurez qu'à utiliser un outil comme Intersection (dans Vector > Geoprocessing) pour sélectionner tous les carrés de 1 km² à l'intérieur d'un Land spécifique.


Quel type de données est « champ » ? Dans un exemple, vous comparez la valeur de "field" à la valeur NUMBERIC 1, et dans l'autre, vous la comparez à une chaîne "1", c'est-à-dire une chaîne d'un caractère qui contient le texte "1". Les deux ne sont pas forcément les mêmes. [Edit : j'avais oublié MySql ENUM, cela fait un moment que j'utilise activement MySql, donc pour ce cas précis, ce que KennyTM a dit =)]

Sans voir l'ensemble de données que vous utilisez et la définition de la table (pour afficher les types de données), ainsi que la version spécifique de MySql que vous utilisez, je ne peux pas donner de meilleure réponse que cela. Mais cela se résume au fait que les deux requêtes que vous effectuez, bien que superficiellement identiques, sont en réalité différentes.


La version CAS.

C'est parce qu'il y a de fortes chances que vous modifiiez la même ligne plusieurs fois avec les instructions individuelles. Si la ligne 10 contient à la fois condition_1 et condition_y, elle devra être lue et modifiée deux fois. Si vous avez un index clusterisé, cela signifie deux mises à jour d'index clusterisé en plus des autres champs modifiés.

Si vous pouvez le faire comme une seule instruction, chaque ligne ne sera lue qu'une seule fois et elle devrait s'exécuter beaucoup plus rapidement.

J'ai changé un processus similaire il y a environ un an qui utilisait des dizaines d'instructions UPDATE dans l'ordre pour utiliser un depuis UPDATE avec CASE et le temps de traitement a chuté d'environ 80%.

Il me semble logique que sur la première option, SQL Server ne parcoure la table qu'une seule fois et pour chaque ligne, il évaluera la condition.

Sur le second, il faudra parcourir toute la table 4 fois

Ainsi, pour un tableau de 1000 lignes, sur la première option dans le meilleur des cas on parle de 1000 évaluations et dans le pire des cas, 3000. Sur la seconde on aura toujours 4000 évaluations


Vous disposez d'une mise à l'échelle pour accélérer le processus d'apprentissage. Les fonctionnalités peuvent avoir différentes échelles. L'un peut aller de 1 à 10 et l'autre de -100 à 1000. En utilisant la normalisation, vous faites en sorte que leur échelle soit la même, ce qui aide à accélérer le processus d'apprentissage. Vous devriez trouver la moyenne et la variance pour chaque caractéristique séparément sur vos données d'entraînement. puis, pendant l'apprentissage et les tests, chaque caractéristique doit être réduite par la moyenne correspondante et divisée par l'écart type correspondant. Alors oui, pour chaque fonctionnalité pendant les tests et l'entraînement, vous devez fournir les mêmes valeurs pour la moyenne et la norme qui sont obtenues à l'aide des données d'entraînement. Je vous propose de jeter un oeil ici.

La principale raison d'utiliser des statistiques calculées uniquement sur l'ensemble d'apprentissage est d'éviter les fuites d'informations de l'ensemble de test.

Si ce n'est pas un problème, alors il est parfaitement acceptable d'utiliser les statistiques de l'ensemble des données.

Voir ici pour une discussion plus approfondie.

Avec la mise à l'échelle (ou la transformation Z), vous avez besoin d'une moyenne et d'une variance, qui devraient provenir des données totales.

De plus, si votre modèle doit être utilisé sur de futures données à venir, cette moyenne et cette variance doivent également être appliquées aux nouvelles données, plutôt que basées sur la moyenne ou la variance des nouvelles données.

Une hypothèse importante dans la modélisation est que la caractéristique/le modèle dans la formation serait le même ou similaire dans l'ensemble de test. C'est la base sur laquelle nous pouvons utiliser les données historiques pour prédire l'avenir.

Par conséquent, cela nécessite une cohérence dans le mappage des valeurs à une autre à l'aide d'une fonction de transformation. Différents ensembles de moyenne et de variance conduiraient à une transformation différente.

L'argument consistant à éviter les fuites d'informations dans les nouvelles données en utilisant les statistiques des données d'apprentissage (moyenne, écart-type) pour la normalisation semble contre-intuitif, car l'insertion de la moyenne et de l'écart-type d'apprentissage dans les nouvelles données EST une fuite d'informations des données d'entraînement vers les nouvelles données.

Statistiquement, cette procédure « force » l'appartenance des nouvelles données à la population d'apprentissage, ce qui ne doit pas être nécessairement vrai dans tous les cas : la prédiction est aussi un test de stationnarité des processus sous-jacents.

Par exemple, les tests t statistiques pour les différences moyennes utilisent les statistiques de chaque groupe, ce qui permet de détecter les différences (moyennes) entre les groupes, ce qui serait difficile (le test aurait une puissance inférieure) s'il était combiné (ou, seulement l'un des groupes) statistiques serait utilisé à la place.

Je pense que la pratique actuelle essaie de maintenir l'erreur de prédiction faible en "saignant" les informations de l'ensemble d'entraînement dans le nouvel ensemble.


2 réponses 2

Vous pouvez utiliser la régression pondérée pour atteindre votre objectif. Outre les données, pour chaque observation, un poids est attribué qui indique l'importance de l'erreur pour cette observation. Plus d'informations et un exemple ici : Comment utiliser les poids dans la fonction lm dans R ?

Ces deux jeux de données sont-ils obtenus en échantillonnant la même population ? Et les données sont-elles longitudinales/corrélées (par exemple, échantillonnez-vous encore et encore les deux mêmes souris de laboratoire) ? Si les deux ensembles de données sont échantillonnés à partir de la même population et que les données ne sont pas longitudinales/corrélées, alors dans mon esprit, il est bon de fusionner les données. Vous ajoutez simplement plus de points de données à votre échantillon. La différence de domaine n'est pas un problème, tant que vous souhaitez réellement modéliser les données pour l'ensemble de ce domaine.

Mais, je veux que les deux ensembles de données soient pondérés uniformément dans la dimension x - c'est-à-dire que même s'il y a une densité de données beaucoup plus élevée autour du point $x=5$ pour l'ensemble rouge par rapport à l'ensemble noir, je voudrais le noir point d'avoir autant de poids que les points rouges entre disons $x=4.5$ et $x=5.5$.

Par cela, voulez-vous dire qu'UN point noir à $x=5$ égale en poids les PLUSIEURS points rouges entre $x=4.5$ et $x=5.5$ ? Cela me semble étrange, car vous dites essentiellement que vous faites beaucoup plus confiance aux mesures noires qu'aux mesures rouges, mais si vous utilisez la même configuration et la même population d'échantillonnage, je ne vois pas pourquoi cela devrait être le cas?


Améliorations de la sécurité eSIM

Cependant, cela dit, je pense que l'aspect physique de la sécurité s'améliore comme l'ont fait allusion certains commentateurs, mais que la valeur de la sécurité est négligeable compte tenu des vecteurs d'attaque populaires.

  • Étant donné que l'eSIM est désormais stockée numériquement de manière sécurisée (Secure Enclave sur les appareils iOS par exemple) sur l'appareil, la retirer pour lire son contenu devrait être plus difficile que de la sortir physiquement d'un emplacement pour carte SIM et de l'insérer dans un lecteur de carte sim.

Comprendre la concaténation de l'ensemble vide à n'importe quel ensemble.

Je sais que concaténer l'ensemble vide à n'importe quel ensemble donne l'ensemble vide. Donc, $A circ varnothing = varnothing$. Ici $A$ est un ensemble de chaînes et la concaténation ($circ$) de deux ensembles de chaînes, $X$ et $Y$ est l'ensemble constitué de toutes les chaînes de la forme $xy$ où $xin X $ et $y in Y$. (Vous voudrez peut-être jeter un œil à la page 65, Exemple 1.53 d'Introduction à la théorie du calcul par Michael Sipser). Cependant, je suis un peu perplexe lorsque j'essaie de comprendre intuitivement cela.

UNE tort La ligne de pensée amènera à se demander : « Si nous concaténons $A$ avec $varnothing$, ne devrait-il pas toujours s'agir de $A$ ? »

Eh bien, une façon de me forcer à comprendre la bonne réponse, peut-être, de dire que, puisque je concaténe avec un ensemble vide, en réalité je ne pourrai pas effectuer la concaténation. La concaténation n'existera pas du tout.

Je demande l'aide d'utilisateurs expérimentés pour fournir des conseils et des exemples concrets qui aideront à modifier le processus de réflexion et à mieux comprendre la bonne réponse. Je mets plus l'accent sur des exemples de la vie réelle.

J'ai besoin de comprendre cela. Je ne suis pas content de simplement mémoriser la bonne réponse.


4 réponses 4

Le moyen simple est d'ajouter une variable catégorielle $z$ pour identifier les différentes conditions expérimentales et de l'inclure dans votre modèle avec une "interaction" avec $x$ c'est-à-dire $y sim z + x#z$. Cela effectue les cinq régressions à la fois. Son $R^2$ est ce que vous voulez.

Pour voir pourquoi la moyenne des valeurs $R$ individuelles peut être erronée, supposons que la direction de la pente soit inversée dans certaines des conditions expérimentales. Vous feriez la moyenne d'un tas de 1 et de -1 à environ 0, ce qui ne refléterait la qualité d'aucun des ajustements. Pour voir pourquoi la moyenne de $R^2$ (ou toute transformation fixe de celle-ci) n'est pas correcte, supposons que dans la plupart des conditions expérimentales vous n'ayez eu que deux observations, de sorte que leurs $R^2$ valent toutes 1$, mais dans une expérience vous avait une centaine d'observations avec $R^2=0$. La moyenne de $R^2$ de presque 1 ne refléterait pas correctement la situation.

Pour les coefficients de corrélation de Pearson, il est généralement approprié de transformer le r valeurs à l'aide d'un Fisher z transformation. Puis faire la moyenne des z-values ​​et reconvertir la moyenne en un r valeur.

J'imagine que ce serait bien pour un coefficient de Spearman également.

La corrélation moyenne peut être significative. Tenez également compte de la distribution des corrélations (par exemple, tracez un histogramme).

Mais si je comprends bien, pour chaque individu, vous avez un classement de n$ éléments plus les classements prédits de ces éléments pour cet individu, et vous examinez la corrélation entre les classements d'un individu et ceux prédits.

Dans ce cas, il se peut que la corrélation ne soit pas la meilleure mesure de la qualité des prédictions de l'algorithme. Par exemple, imaginez que l'algorithme récupère parfaitement les 100 premiers éléments et que les 200 éléments suivants soient totalement ratés, contrairement à l'inverse. Il se peut que vous ne vous souciez que de la qualité des meilleurs classements. Dans ce cas, vous pouvez regarder la somme des différences absolues entre le classement de l'individu et le classement prédit, mais uniquement parmi les éléments les plus élevés de l'individu.


Pourquoi un null ne peut-il pas être égal à un null pour une jointure ?

Dites simplement à Oracle de le faire :

(Notez qu'en SQL standard, vous pouvez utiliser t1.id n'est pas distinct de t2.id pour obtenir un opérateur d'égalité null-safe, mais Oracle ne le prend pas en charge)

Mais cela ne fonctionnera que si la valeur de remplacement (-1 dans l'exemple ci-dessus) n'apparaît pas réellement dans le tableau. Trouver une telle valeur "magique" pour les nombres force être possible, mais ce sera très difficile pour les valeurs de caractère (surtout parce qu'Oracle traite également une chaîne vide comme nulle)

Le plus : aucun index sur les colonnes id ne sera utilisé (vous pouvait définir un index basé sur une fonction avec l'expression coalesce() cependant).

Une autre option qui fonctionne pour tous les types, sans valeurs magiques :

Mais la vraie question est : Est-ce que ça a du sens?

Considérez les exemples de données suivants :

Laquelle des combinaisons de valeurs nulles doit être choisie dans la jointure ? Mon exemple ci-dessus entraînera quelque chose comme une jointure croisée pour toutes les valeurs nulles.


Vous devrez préciser précisément ce que vous entendez par "différent". Vous devrez également spécifier les hypothèses que vous êtes prêt à faire sur la structure de corrélation en série au sein de chaque série chronologique.

Avec les tests t, vous comparez les signifier de chaque groupe et vous supposez que les groupes sont constitués d'observations indépendantes avec des variances égales (cette dernière est parfois relâchée). Lors du test de séries chronologiques, l'hypothèse d'indépendance n'est généralement pas raisonnable, mais vous devez ensuite la remplacer par une structure de corrélation spécifiée - par exemple, vous pouvez supposer que la série chronologique suit les processus AR(1) avec une autocorrélation égale. Par conséquent, même la comparaison des moyennes de deux séries chronologiques ou plus est considérablement plus difficile qu'avec des données indépendantes.

Je spécifiais soigneusement les hypothèses que j'étais prêt à faire sur chaque série chronologique et ce que je souhaitais comparer, puis j'utilisais un bootstrap paramétrique (basé sur le modèle supposé) pour effectuer le test.