不同矩阵维数R中的典型相关

不同矩阵维数R中的典型相关,r,correlation,R,Correlation,我在R中进行CC分析时遇到困难。 我正在做的作业来自Sharma的“应用多元分析”,练习13.7,如果你熟悉的话 基本上,我被要求对一组变量进行CCA。有七个X变量,但只有五个Y变量,因此R抱怨维度不兼容。请参见下图,了解名为CETNEW的数据的视觉表示 已编辑(从图像更改为dput): 我到目前为止所做的事情 CETNEW <- CETNEW[,-1] #To remove the non-numeric values 来自CCA的matcor函数也会产生以下错误消息: Error i

我在R中进行CC分析时遇到困难。
我正在做的作业来自Sharma的“应用多元分析”,练习13.7,如果你熟悉的话

基本上,我被要求对一组变量进行CCA。有七个X变量,但只有五个Y变量,因此R抱怨维度不兼容。请参见下图,了解名为CETNEW的数据的视觉表示

已编辑(从图像更改为dput):

我到目前为止所做的事情

CETNEW <- CETNEW[,-1] #To remove the non-numeric values
来自CCA的matcor函数也会产生以下错误消息:

Error in cov(X, Y, use = "pairwise") : incompatible dimensions
Error in data.frame(..., check.names = FALSE) : arguments imply differing number of rows: 7, 5
因此,似乎这一切都归结为不同维度的问题。我已经和我的教授谈过了,但是因为他使用的是SAS,它显然与这个问题兼容,并且可以解决这个问题,所以他不能帮助我


请注意,如果您熟悉典型相关,并且以前遇到过类似的问题,我们将非常感谢您对本主题的任何帮助。

如果您查看数据,请注意第一列分为X和Y标签。这对我来说意味着你的数据被转换了。如果是这样,则每列都是一个观测值,X和Y标签表示在每个观测值上进行的各种测量。典型相关是在一组观测值的两组测量值/变量上进行的。首先,这里是转置的数据:

CETNEW.T <- structure(list(X1 = c(2.72, 1.2, 0.82, 0.92, 1.19, 1, 1.45, 0.68, 
0.98, 0.57, 1.07, 0.91), X2 = c(1.2, 3.78, 0.7, 1.04, 1.06, 1.32, 
1.31, 0.56, 1, 0.79, 1.13, 1.38), X3 = c(0.82, 0.7, 1.7, 0.59, 
0.83, 1.08, 1.01, 0.65, 0.78, 0.66, 0.93, 0.77), X4 = c(0.92, 
1.04, 0.59, 3.09, 1.06, 0.93, 1.47, 0.62, 1.26, 0.51, 0.94, 0.85
), X5 = c(1.19, 1.06, 0.83, 1.06, 2.94, 1.36, 1.66, 0.68, 1.16, 
0.77, 1.37, 1.11), X6 = c(1, 1.32, 1.08, 0.93, 1.36, 2.94, 1.56, 
0.9, 1.23, 0.78, 1.65, 1.31), X7 = c(1.45, 1.31, 1.01, 1.47, 
1.66, 1.56, 3.11, 1.03, 1.7, 0.81, 1.63, 1.44), Y1 = c(0.68, 
0.56, 0.65, 0.62, 0.68, 0.9, 1.03, 1.71, 0.99, 0.65, 0.86, 0.72
), Y2 = c(0.98, 1, 0.78, 1.26, 1.16, 1.23, 1.7, 0.99, 3.07, 0.61, 
1.43, 1.28), Y3 = c(0.57, 0.79, 0.66, 0.51, 0.77, 0.78, 0.81, 
0.65, 0.61, 2.83, 1.04, 0.84), Y4 = c(1.07, 1.13, 0.93, 0.94, 
1.37, 1.65, 1.63, 0.86, 1.43, 1.04, 2.83, 1.6), Y5 = c(0.91, 
1.38, 0.77, 0.85, 1.11, 1.31, 1.44, 0.72, 1.28, 0.84, 1.6, 4.01
)), class = "data.frame", row.names = c(NA, -12L))

CETNEW.T使用dput(CETNEW)并将结果作为代码块粘贴到问题中。一幅画是没有用的。你确定你不是要提取两个列块而不是两个行块吗?好的,我把它改为dput。还不太熟悉问题的结构,但我会习惯的,谢谢。由于我正在从和xls.file导入数据,我可以将变量转换为列而不是行,但我认为同样的问题也会发生?当
dput()
出现错误时,因为您似乎在使用TIBLE,但我能够在答案中修复数据。TIBLE应该是观测值=行和列=观测值的度量值/属性,但您的表似乎被转置了。
Error in cov(X, Y, use = "pairwise") : incompatible dimensions
Error in data.frame(..., check.names = FALSE) : arguments imply differing number of rows: 7, 5
CETNEW.T <- structure(list(X1 = c(2.72, 1.2, 0.82, 0.92, 1.19, 1, 1.45, 0.68, 
0.98, 0.57, 1.07, 0.91), X2 = c(1.2, 3.78, 0.7, 1.04, 1.06, 1.32, 
1.31, 0.56, 1, 0.79, 1.13, 1.38), X3 = c(0.82, 0.7, 1.7, 0.59, 
0.83, 1.08, 1.01, 0.65, 0.78, 0.66, 0.93, 0.77), X4 = c(0.92, 
1.04, 0.59, 3.09, 1.06, 0.93, 1.47, 0.62, 1.26, 0.51, 0.94, 0.85
), X5 = c(1.19, 1.06, 0.83, 1.06, 2.94, 1.36, 1.66, 0.68, 1.16, 
0.77, 1.37, 1.11), X6 = c(1, 1.32, 1.08, 0.93, 1.36, 2.94, 1.56, 
0.9, 1.23, 0.78, 1.65, 1.31), X7 = c(1.45, 1.31, 1.01, 1.47, 
1.66, 1.56, 3.11, 1.03, 1.7, 0.81, 1.63, 1.44), Y1 = c(0.68, 
0.56, 0.65, 0.62, 0.68, 0.9, 1.03, 1.71, 0.99, 0.65, 0.86, 0.72
), Y2 = c(0.98, 1, 0.78, 1.26, 1.16, 1.23, 1.7, 0.99, 3.07, 0.61, 
1.43, 1.28), Y3 = c(0.57, 0.79, 0.66, 0.51, 0.77, 0.78, 0.81, 
0.65, 0.61, 2.83, 1.04, 0.84), Y4 = c(1.07, 1.13, 0.93, 0.94, 
1.37, 1.65, 1.63, 0.86, 1.43, 1.04, 2.83, 1.6), Y5 = c(0.91, 
1.38, 0.77, 0.85, 1.11, 1.31, 1.44, 0.72, 1.28, 0.84, 1.6, 4.01
)), class = "data.frame", row.names = c(NA, -12L))
library("CCA")
str(CETNEW.T)
# 'data.frame': 12 obs. of  12 variables:
#  $ X1: num  2.72 1.2 0.82 0.92 1.19 1 1.45 0.68 0.98 0.57 ...
#  $ X2: num  1.2 3.78 0.7 1.04 1.06 1.32 1.31 0.56 1 0.79 ...
#  $ X3: num  0.82 0.7 1.7 0.59 0.83 1.08 1.01 0.65 0.78 0.66 ...
#  $ X4: num  0.92 1.04 0.59 3.09 1.06 0.93 1.47 0.62 1.26 0.51 ...
#  $ X5: num  1.19 1.06 0.83 1.06 2.94 1.36 1.66 0.68 1.16 0.77 ...
#  $ X6: num  1 1.32 1.08 0.93 1.36 2.94 1.56 0.9 1.23 0.78 ...
#  $ X7: num  1.45 1.31 1.01 1.47 1.66 1.56 3.11 1.03 1.7 0.81 ...
#  $ Y1: num  0.68 0.56 0.65 0.62 0.68 0.9 1.03 1.71 0.99 0.65 ...
#  $ Y2: num  0.98 1 0.78 1.26 1.16 1.23 1.7 0.99 3.07 0.61 ...
#  $ Y3: num  0.57 0.79 0.66 0.51 0.77 0.78 0.81 0.65 0.61 2.83 ...
#  $ Y4: num  1.07 1.13 0.93 0.94 1.37 1.65 1.63 0.86 1.43 1.04 ...
#  $ Y5: num  0.91 1.38 0.77 0.85 1.11 1.31 1.44 0.72 1.28 0.84 ...
X <- CETNEW.T[, 1:7]
Y <- CETNEW.T[, 8:12]
ccCETNEW <- cc(X, Y)