使用R-如何在标准化后找到有序对的相关性?

使用R-如何在标准化后找到有序对的相关性?,r,correlation,standardized,R,Correlation,Standardized,假设我有以下有序数据集: X <- c(12, 15, 23, 4, 9, 36, 10, 16, 67, 45, 58, 32, 40, 58, 33) # and Y <- c(1.5, 3.3, 10, 2.1, 8.3, 6.3, 4, 5.1, 1.4, 1.6, 1.8, 3.1, 2.2, 4, 3) X为了标准化X和Y的给定集合,我们将首先 计算总体的平均值、方差、标准差 在下一步中,我们需要减去每个表中的每个值 从它的平均值开始,然后在最后一步,我们需要

假设我有以下有序数据集:

X <- c(12, 15, 23, 4, 9, 36, 10, 16, 67, 45, 58, 32, 40, 58, 33) 

# and 

Y <- c(1.5, 3.3, 10, 2.1, 8.3, 6.3, 4, 5.1, 1.4, 1.6, 1.8, 3.1, 2.2, 4, 3) 

X为了标准化X和Y的给定集合,我们将首先
计算总体的平均值、方差、标准差

在下一步中,我们需要减去每个表中的每个值 从它的平均值开始,然后在最后一步,我们需要划分 从第二步通过其标准偏差获得的值 只不过是集合的Z分数(和个体值,比如Xi)。 这样,我们将得到这两种方法的平均值0和标准偏差1 X和Y集

这是标准化条件,因为对于所有集合(在您的案例X和Y中),我们总是将平均值设为零,标准偏差设为一

我们还将研究有序对之间的关系

如果我们看一些标准关系,比如协方差 相关性,斜率是绘制Y和X的最佳拟合线, 那么,Y截距对于原始数据来说是相同的吗 价值观和标准化价值观是否不同? 如果它们不同,它们会有多大的不同?为什么

这就是问题的背景

我在R中尝试的内容如下:

X <- c(12, 15, 23, 4, 9, 36, 10, 16, 67, 45, 58, 32, 40, 58, 33) 
# and 
Y <- c(1.5, 3.3, 10, 2.1, 8.3, 6.3, 4, 5.1, 1.4, 1.6, 1.8, 3.1, 2.2, 4, 3) 
您的数据集是:

X <- c(12, 15, 23, 4, 9, 36, 10, 16, 67, 45, 58, 32, 40, 58, 33) 
# and 
Y <- c(1.5, 3.3, 10, 2.1, 8.3, 6.3, 4, 5.1, 1.4, 1.6, 1.8, 3.1, 2.2, 4, 3) 

X您可以使用
scale(X)
标准化R中的矩阵/向量,并且可以使用
cor(X,y)
找到两个向量之间的相关性。因此,你需要的是(可能?
cor(scale(X),scale(Y))
,但缩放和标准化与相关性无关,即通过
cor(X,Y)
@Therkel获得相同的结果,似乎你没有正确理解问题的上下文。是的,你是对的。我可能解释不清楚。我也在等R码,如果可以的话。哇。。。真棒的解释。。。感谢您花时间编写代码并解决我的问题。。。给人印象深刻的
# Covariance for older sets (X, Y)
covXY <- (1/15) * sum((X - mean(X))*(Y - mean(Y)))

# Covariance for New sets (Z_Score_X, Z_Score_Y)
covXYZ <- (1/15) * sum((Z_Score_X - mean(Z_Score_X))*(Z_Score_Y - mean(Z_Score_Y)))
# Slope for old set (X, Y)
Beta_X_Y  <- round(lm(Y ~ X)$coeff[[2]], 2)

# Slope for standardized values in new set (Z_Score_z, Z_Score_z1)
Beta_ZScoreXY <- round(lm(Z_Score_X ~ Z_Score_Y)$coeff[[2]], 2)
# Intercept for old set
Intercept_X_Y <- round(lm(Y ~ X)$coeff[[1]], 2) 
# 5.17

# Intercept for standardized set, should be zero
Intercept_ZScore_X_Y <- round(lm(Z_Score_Y ~ Z_Score_X)$coeff[[1]], 2) 
# Yes, it is 0
# Correlation of old set
CorrelationXY <- round(covXY / (sdX * sdY), 2)

# Variance for new set
VarZScoreX <- sum((Z_Score_X - mean(Z_Score_X))^2)/15
VarZScoreY <- sum((Z_Score_Y - mean(Z_Score_Y))^2)/15 
sdZScoreX <- sqrt(VarZScoreX)
sdZScoreY <- sqrt(VarZScoreY)

# Correlation of new set
correlation_ZScore_X_Y <- round(covXYZ / (sdZScoreX * sdZScoreY), 2)