"Découvrir" indique que vous explorez les données. Des tests formels seraient superflus et suspects. Au lieu de cela, appliquez des techniques d'analyse exploratoire des données (EDA) standard pour révéler ce qui peut être dans les données.
Ces techniques standard incluent la ré-expression , l' analyse résiduelle , les techniques robustes (les "trois R" de l'EDA) et le lissage des données comme décrit par John Tukey dans son livre classique EDA (1977). Comment mener à bien certaines d'entre elles sont décrites dans mon post à Box-Cox comme transformation pour les variables indépendantes? et en régression linéaire, quand il est approprié d'utiliser le journal d'une variable indépendante au lieu des valeurs réelles? , entre autres .
Le résultat est que beaucoup peut être vu en passant aux axes log-log (ré-exprimant efficacement les deux variables), en lissant les données pas trop agressivement et en examinant les résidus du lissage pour vérifier ce qu'il aurait pu manquer, comme je vais l'illustrer.
Voici les données présentées avec un lissage qui - après avoir examiné plusieurs lissages avec différents degrés de fidélité aux données - semble être un bon compromis entre trop et trop peu de lissage. Il utilise Loess, une méthode robuste bien connue (elle n'est pas fortement influencée par les points éloignés verticalement).
La grille verticale est par pas de 10 000. La douceur ne fait suggérer une certaine variation de la Grad_median
taille échantillon: il semble tomber comme la taille des échantillons (approche 1000. Les extrémités de la lisse ne sont pas dignes de confiance - en particulier pour les petits échantillons, où l' erreur d' échantillonnage devrait être relativement importante - alors ne ne les lisez pas trop.) Cette impression d'une véritable baisse est soutenue par les bandes de confiance (très grossières) tracées par le logiciel autour du lisse: ses "ondulations" sont plus grandes que les largeurs des bandes.
Pour voir ce que cette analyse aurait pu manquer, la figure suivante examine les résidus. (Ce sont des différences de logarithmes naturels, mesurant directement les écarts verticaux entre les données du lissage précédent. Comme ce sont de petits nombres, ils peuvent être interprétés comme des différences proportionnelles; par exemple, reflète une valeur de données qui est environ inférieure au lissage correspondant. valeur.)20 %- 0,220 %
Nous souhaitons (a) s'il existe des modèles de variation supplémentaires à mesure que la taille de l'échantillon change et (b) si les distributions conditionnelles de la réponse - les distributions verticales des positions des points - sont vraisemblablement similaires pour toutes les valeurs de la taille de l'échantillon, ou si certains de leurs aspects (comme leur propagation ou leur symétrie) pourraient changer.
Ce lisse essaie de suivre les points de données encore plus étroitement qu'auparavant. Néanmoins, il est essentiellement horizontal (dans le cadre des bandes de confiance, qui couvrent toujours une valeur y de ), suggérant qu'aucune autre variation ne peut être détectée. La légère augmentation de la propagation verticale près du milieu (tailles d'échantillon de 2000 à 3000) ne serait pas significative si elle était testée formellement, et elle n'est donc certainement pas remarquable à ce stade exploratoire. Il n'y a pas d'écart clair et systématique de ce comportement global apparent dans aucune des catégories séparées (distinguées, pas trop bien, par la couleur - je les ai analysées séparément dans des figures non montrées ici).0,0
Par conséquent, ce simple résumé:
le salaire médian est inférieur d'environ 10 000 pour des tailles d'échantillon proches de 1 000
capture adéquatement les relations apparaissant dans les données et semble se maintenir uniformément dans toutes les grandes catégories. Que cela soit significatif - c'est-à-dire qu'il résiste face à des données supplémentaires - ne peut être évalué qu'en collectant ces données supplémentaires.
Pour ceux qui voudraient vérifier ce travail ou aller plus loin, voici le R
code.
library(data.table)
library(ggplot2)
#
# Read the data.
#
infile <- "https://raw.githubusercontent.com/fivethirtyeight/\
data/master/college-majors/grad-students.csv"
X <- as.data.table(read.csv(infile))
#
# Compute the residuals.
#
span <- 0.6 # Larger values will smooth more aggressively
X[, Log.residual :=
residuals(loess(log(Grad_median) ~ I(log(Grad_sample_size)), X, span=span))]
#
# Plot the data on top of a smooth.
#
g <- ggplot(X, aes(Grad_sample_size, Grad_median)) +
geom_smooth(span=span) +
geom_point(aes(fill=Major_category), alpha=1/2, shape=21) +
scale_x_log10() + scale_y_log10(minor_breaks=seq(1e4, 5e5, by=1e4)) +
ggtitle("EDA of Median Salary vs. Sample Size",
paste("Span of smooth is", signif(span, 2)))
print(g)
span <- span * 2/3 # Look for a little more detail in the residuals
g.r <- ggplot(X, aes(Grad_sample_size, Log.residual)) +
geom_smooth(span=span) +
geom_point(aes(fill=Major_category), alpha=1/2, shape=21) +
scale_x_log10() +
ggtitle("EDA of Median Salary vs. Sample Size: Residuals",
paste("Span of smooth is", signif(span, 2)))
print(g.r)