常见的相关性分析

方差分析和相关性分析都是描述特征之间的关系的统计方法,但它们关注的方面略有不同。

方差分析主要用于研究一个或多个自变量对因变量的影响,即研究因素之间的差异性。通过比较不同组之间的方差,可以确定哪些因素对结果变量的影响比较重要,以及不同组之间的显著性差异。因此,方差分析可以用于描述特征的重要性程度。
相关性分析主要用于研究两个或多个变量之间的关系,即研究特征之间的相关性。通过计算相关系数,可以确定不同变量之间的相关程度,以及变量之间的正相关或负相关关系。因此,相关性分析可以用于描述特征间的关系。

Pearson相关系数分析:用于评估两个连续变量之间的线性关系。
Spearman秩相关系数分析:用于评估两个有序变量之间的关系,不要求变量之间具有线性关系。
Kendall秩相关系数分析:用于评估两个有序变量之间的关系,也不要求变量之间具有线性关系。
判定系数(R²)分析:用于评估一个变量是否能够解释另一个变量的变异。

Pearson相关系数分析

Pearson相关系数是用于衡量两个连续变量之间线性相关程度的方法。它的取值范围在-1到1之间,其中0表示没有相关关系,1表示完全正相关,-1表示完全负相关。

计算Pearson相关系数的公式为:

r = Σ((x – x̄)(y – ȳ)) / [(Σ(x – x̄)²Σ(y – ȳ)²) ^ 0.5]

其中,x和y是两个变量的观测值,x̄和ȳ是它们的均值。r的取值范围在-1到1之间,r值越接近1或-1,代表两个变量之间的相关性越强;r值越接近0,代表两个变量之间没有相关性。

Spearman秩相关系数分析

Spearman秩相关系数是用于评估两个有序变量之间的关系的方法。它的取值范围在-1到1之间,其中0表示没有相关关系,1表示完全正相关,-1表示完全负相关。

计算Spearman秩相关系数的公式为:

r = 1 – (6Σd² / n(n² – 1))

其中,d为两个变量的秩次差,n为样本个数。Spearman秩相关系数与Pearson相关系数类似,但更适用于非正态分布的数据或者两个变量之间不是线性关系的情况。

Kendall秩相关系数分析

Kendall秩相关系数也是用于评估两个有序变量之间的关系的方法。它的取值范围也在-1到1之间,其中0表示没有相关关系,1表示完全正相关,-1表示完全负相关。

计算Kendall秩相关系数的公式:
r = (P – Q) / [(n(n-1))/2]

其中,P是两个变量的排列一致的对数,Q是两个变量的排列不一致的对数,n是样本个数。Kendall秩相关系数与Spearman秩相关系数类似,但更适用于小样本数据和存在相同秩次的情况。

在计算P和Q时,首先需要将变量的观测值从小到大排列,并为每个观测值分配一个秩次。然后,对于任意两个观测值,如果它们在两个变量中的秩次一致,则为一致对数P加1;如果它们在两个变量中的秩次不一致,则为不一致对数Q加1。最后,将P和Q代入公式中即可计算出Kendall秩相关系数。

数值型变量例子

import pandas as pd
from scipy.stats import pearsonr, spearmanr, kendalltau

# 构造样本数据
df = pd.DataFrame({
    'x': [1, 2, 3, 4, 5],
    'y': [3, 5, 7, 9, 11]
})

# 计算Pearson相关系数和p值
pearson_corr, pearson_pvalue = pearsonr(df['x'], df['y'])
print('Pearson相关系数:', pearson_corr)
print('Pearson p值:', pearson_pvalue)

# 计算Spearman秩相关系数和p值
spearman_corr, spearman_pvalue = spearmanr(df['x'], df['y'])
print('Spearman秩相关系数:', spearman_corr)
print('Spearman p值:', spearman_pvalue)

# 计算Kendall秩相关系数和p值
kendall_corr, kendall_pvalue = kendalltau(df['x'], df['y'])
print('Kendall秩相关系数:', kendall_corr)
print('Kendall p值:', kendall_pvalue)
'''
在上面的例子中,我们使用了pandas包创建了一个包含两个变量x和y的DataFrame对象。
然后,分别使用scipy.stats包中的pearsonr()、spearmanr()和kendalltau()函数计算了Pearson、Spearman和Kendall秩相关系数以及p值。
最后,将结果打印出来。

需要注意的是,这些函数计算相关系数时,会自动排除包含缺失值的样本。如果数据中包含缺失值,需要先进行缺失值处理。
'''

文本型变量例子

import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from scipy.stats import pearsonr

# 构造样本数据
text_list = [
    'I love Python',
    'Python is the best programming language',
    'Java is another programming language',
    'I dislike Java'
]
df = pd.DataFrame({'text': text_list})

# 使用TF-IDF向量化文本
vectorizer = TfidfVectorizer()
tfidf = vectorizer.fit_transform(df['text'])

# 计算Pearson相关系数和p值
corr, pvalue = pearsonr(tfidf[0].toarray()[0], tfidf[1].toarray()[0])
print('Pearson相关系数:', corr)
print('p值:', pvalue)
'''
在上面的例子中,我们使用sklearn库中的TfidfVectorizer类将文本向量化为TF-IDF向量,
然后使用scipy库中的pearsonr()函数计算了第一篇文章和第二篇文章之间的Pearson相关系数和p值。
需要注意的是,这里只计算了两篇文章之间的相关性,如果需要计算多篇文章之间的相关性,可以使用循环或者矩阵计算的方法。
'''

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年8月16日
下一篇 2023年8月16日

相关推荐