皮尔逊相关系数实例

计算两个用户的Pearson 相关性:

/**

  • 皮尔逊Pearson Correlation
  • 对用户X,Y sum2X:X的所有评分项之平方和sum2Y:Y的所有评分项之平方和
  • sumXY:sumX 、sumY的交集之和,即X、Y都评价了的项之和
  • 相关性:sumXY / sqrt(sumX^2 * sumY^2)
  • 两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商:
  • p(X,Y) = (xi - avg(x))(yi - avg(y)) / sqrt((xi - avg(x))^2) * sqrt((yi - avg(y))^2)
    *皮尔逊距离度量的是两个变量X和Y之间的距离:
  • d(X,Y) =1 -p(X,Y)/(n -1) * sum((Xi - avg(X))/p(X) * (Yi-avg(Y)))/p(Y)

*/

public double userSimilarity(int userid1, int userid2) throws MyException {
// if(userid1 == userid2)
// throw new MyException(“同一用户不能比较相似度。”);
List list1 = null;
List list2 = null;
double avgX = 0.0;
double avgY = 0.0;
try {
list1 = st.getRatings(userid1);
list2 = st.getRatings(userid2);
avgX = st.getAvgRatings(userid1);
avgY = s

皮尔逊相关系数是一种衡量两个变量之间线性关系强度的统计量,它的取值范围在-1到1之间。当相关系数为1时,表示两个变量完全正相关;当相关系数为-1时,表示两个变量完全负相关;当相关系数为0时,表示两个变量之间没有线性关系。 下面以一个实例来说明如何进行皮尔逊相关系数分析: 假设我们有一组数据,分别表示X和Y两个变量的取值: X: [1, 2, 3, 4, 5] Y: [2, 4, 6, 8, 10] 首先,我们需要计算X和Y的均值,分别记为X_mean和Y_mean。对于上述数据,X_mean = (1+2+3+4+5)/5 = 3,Y_mean = (2+4+6+8+10)/5 = 6。 然后,我们计算X和Y的协方差,记为cov(X,Y)。协方差的计算公式为:cov(X,Y) = Σ((Xi-X_mean)(Yi-Y_mean)) / (n-1),其中Σ表示求和,Xi和Yi分别表示X和Y的第i个取值,n表示数据的个数。根据公式,我们可以得到cov(X,Y) = ((1-3)*(2-6) + (2-3)*(4-6) + (3-3)*(6-6) + (4-3)*(8-6) + (5-3)*(10-6)) / (5-1) = 5/4 = 1.25。 接下来,我们计算X和Y的标准差,分别记为std(X)和std(Y)。标准差的计算公式为:std(X) = sqrt(Σ(Xi-X_mean)^2 / (n-1)),std(Y)的计算方法类似。根据公式,我们可以得到std(X) = sqrt(((1-3)^2 + (2-3)^2 + (3-3)^2 + (4-3)^2 + (5-3)^2) / (5-1)) = sqrt(2.5),std(Y) = sqrt(((2-6)^2 + (4-6)^2 + (6-6)^2 + (8-6)^2 + (10-6)^2) / (5-1)) = sqrt(10)。 最后,我们可以计算皮尔逊相关系数,记为r。相关系数的计算公式为:r = cov(X,Y) / (std(X) * std(Y))。根据公式,我们可以得到r = 1.25 / (sqrt(2.5) * sqrt(10)) ≈ 0.9487。 因此,在这个实例中,X和Y的皮尔逊相关系数约为0.9487,表明它们之间存在较强的正相关关系。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值