使用百分比之间的相关性是否合乎逻辑

机器算法验证 相关性
2022-04-11 20:19:43

我有两个变量:公司在家工作的员工数量和公司独立承包商的数量——我有 70 家公司的数据。

我试图确定我可以使用什么统计关联来确定这两个变量之间是否存在关系。

我假设最好的方法是将这两个变量转换为百分比,以便我的假设是:远程办公者的百分比与公司拥有的独立承包商的百分比之间存在正相关关系。但是,我读到您不能使用相关性来比较两个百分比。

我的统计能力不强,所以我非常感谢任何关于我在这里尝试做的事情是否合乎逻辑,转换为百分比来运行相关性是否有意义,以及相关性是否是确定两者之间关联的可接受方法的任何见解%s。如果不是,我将非常感谢有关统计测试的建议,这些建议最适合确定这两个变量之间的关联。

3个回答

有人可能断言“您不能在百分比上运行相关性”的一个原因是百分比受 [0, 1] 的限制,而 Pearson r 检验的基本假设是值是正态分布的;这些显然是不相容的。

如果你的百分比集中在一个不太宽的范围内,不太接近 0% 或 100%,我不会太担心这个。

如果您的百分比在 [0, 1] 区间内,或者集中在 0 或 1 附近,我会改为进行 Spearman rho 或 Kendall tau 相关性检验。这些检验不依赖于任何潜在的正态性假设。

您在其中一条评论中链接的视频引用了成分数据。如果您尝试比较加起来为的百分比,这将是一个问题,但您的问题并非如此。无论您将变量表示为计数还是百分比,它都不会限制变量可能值的范围100%independent contractorsoffsite workers

就计数(整数值)性质而言,independent contractors您可以应用泊松、半泊松或负二项式模型:

我创建了一个虚构的数据集设计来拟合泊松回归模型我将使用R

泊松回归模型的形式为因此,对于变量的将作为泊松变量分布,均值因此,我们可以模拟一个适合泊松回归模型的数据集,如下所示(请参阅这篇文章,了解避免独立承包商数量出现高值或零值的截断技巧):log(Y)=β0+β1XX=xlog(E[Y|x])λ=exp(β0+β1x).

set.seed(0)     # Setting the seed value to make findings reproducible.
co = 70         # The number of companies (firms) you have data on.
n  =  1000      # Dirty trick to get "tons" of point to truncate later and end up with 70.
i  =  0         # Intercept chosen to be zero hoping to simplify things.
sl = .04        # The slope or beta1 in the equation in the previous paragraph.
# Assuming the % of off-site workers is varies uniformly from 0% to 100%:
offsite = runif(n, 0, 100) 
mu = exp(i + sl * offsite) # Getting the means 
# Generating the number of independent contractors:
indep   = rpois(n, mu)    
# Creating data set with offsite % and no. contractors in two columns:
dat     = as.data.frame(cbind(offsite, indep))  
# Truncating the data to obtain data points avoiding 0 contractors 
# ...and keeping max. to < 45 (sounds like a real-life plausible max):
dat     = dat[which(dat$indep > 0 & dat$indep < 45), ] 
# Selecting only 70 of these truncated data points:
dat     = dat[sample(nrow(dat),co), ]; rownames(dat) = NULL

我们知道泊松模型的拟合在设计上是完美的,因此我们可以应用它来证明分包公司数量与远程办公人员百分比之间的关联;然而,在现实生活中,情况并非如此。因此,不假设均值和方差相等的负二项式回归模型将更常用于处理过度分散。在基本的统计 R 包中,我们还可以运行准泊松回归来处理这个问题

> fit = glm(indep ~  offsite, family = "quasipoisson", data = dat)
> summary(fit)

Call:
glm(formula = indep ~ offsite, family = "quasipoisson", data = dat)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-1.96453  -0.61346  -0.08643   0.34988   2.16355  

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 0.238500   0.108206   2.204   0.0309 *  
offsite     0.036529   0.001404  26.009   <2e-16 ***

不完全是我们最初选择的截距和斜率,但数据已被截断,我们只有 70 个点。并且它显示了场外工人百分比与独立承包商数量之间的显着关联(根据设计,p ~):场外工人数量每增加,就会有一个正预期分包公司数量的对数差异为或者,场外工人每增加一个百分点,分包商就会增加01%0.037e0.037 (×)

这些图表显示了独立承包商的数量与非现场工人的百分比之间的关系:

在此处输入图像描述


查看这种关系的另一种方法是通过 Spearman 相关性(更符合您的原始问题)。结果非常接近默认的 Pearson 相关性,如上面 David Wright 的正确答案所示:

> cor(dat$offsite, dat$indep, method="pearson")
[1] 0.90324
> cor(dat$offsite, log(dat$indep), method="spearman")
[1] 0.9510245

在给定左上图的情况下尝试对因变量进行对数变换并运行 OLS 回归是很有趣的(请注意,这不等同于泊松回归(或负二项式))。如果我们这样做,我们会发现斜率:

> lm(log(indep) ~  offsite, data = dat)$coef[2]
   offsite 
0.03926557

相当于_

> cor(dat$offsite, log(dat$indep)) * sd(log(dat$indep)) / sd(dat$offsite)
[1] 0.03926557

因为

r=β1i=1n(xix¯)2i=1n(yiy¯)2=β1SxxSyy

您在哪里读到不能使用百分比之间的相关性?我认为相关系数的含义将被保留(例如“如果 X 增加,Y 可能会增加。”或“X 的高值与 Y 的高值相关联。”),所以相关性是公平的游戏。

需要注意的一件事可能是生态相关性但是,只要您控制自己的解释,就应该没问题。

你的问题感觉更多的是基于意见 - 所以请把我的回答与其他人一起回答:)。