我可以用 R 中的双变量数据从散点图中判断偏度吗?

机器算法验证 r 数据可视化
2022-04-05 07:50:36

这是 x(收入)和 y(人口)的散点图。 从散点图中,可以肯定地说数据是左偏还是负偏?

plot(filterdacsom5$Median_Income,filterdacsom5$Total_Population,
     xlab="Income", ylab ="Population",
     main="Demographics plotted for all zip codes in 2017 ",col="red" )

我是新手R并且理解偏度。

Median_Income这是水平轴和Total_Population垂直轴上的散点图。从散点图中,可以肯定地说数据是左偏还是负偏?

2个回答

可以肯定地说数据是左偏或负偏斜吗?

不,这不安全:首先,情节的外观是(右)歪斜,而不是负(左)歪斜。无论如何,您需要在这里小心,因为有过度绘图,这意味着您实际上无法看到中间那个大红色块中发生了什么。尽管这不太可能,但这些红色的点有可能隐藏了一些点的浓度,这些点会降低一个或两个变量的正偏度(或者甚至可能导致负偏度)。为了更好地评估两个变量的偏度,我建议构建感兴趣变量的核密度图并计算这些变量的样本偏度(R下面的代码)。

library(moments);    #Make sure you have installed this package first

DATA <- filterdacsom5;

#Check skewness of median income
skewness(DATA$Median_Income);
plot(density(DATA$Median_Income));    

#Check skewness of population
skewness(DATA$Total_Population);
plot(density(DATA$Total_Population)); 

请注意,散点图为您提供有关变量联合分布的信息,您无法从单个密度图中获得这些信息。如果您想在散点图中看到更好的变量表示,我建议您对其进行调整以处理过度绘图 --- 例如,使用 alpha-transparency 或等高线图。

这种方法可能会产生误导,这就是原因。

散点图可以告诉你每个变量的分布情况。但是散点图还告诉您一些关于两个变量之间的关系的信息,如果一个人仅对其中一个变量进行解释,例如解释偏度,这可能会导致问题。

让我们假设一些具有异方差性的数据,其中 y 没有负值(如您的示例中)。结果图可能是这样的:

阴谋

结果看起来与提供的图相对接近,并且该图表明 x 是倾斜的,尽管实际上并非如此,因为 x 具有均匀分布(请参见下面的数据生成代码),如 x 的直方图所示:

x的历史

因此,就解释一个变量的分布而言,变量之间的关系可能会导致误导性散点图。

我用于情节的代码:

set.seed(568)
x      = rep(1:10000,2)
a <- 20000
b      = -2
sigma2 = x^2
eps    = rnorm(x,mean=0,sd= rev(sqrt(sigma2))) # heteroscedasticity
y      = a + b*x + eps
y[y<0] <- -y[y<0] # no negative values in y
plot(x, y)

编辑:我同意 Ben 的观点,在这种情况下透明度和过度绘图很重要,这就是为什么我为我的示例选择如此大的样本量。对相同数据使用透明度可以减少误导。

plot(x, y, col = alpha("black", 0.05))

具有透明度的绘图