如何在Excel中计算样本子组内的相关性

如何在Excel中计算样本子组内的相关性,excel,google-sheets,excel-formula,google-sheets-formula,Excel,Google Sheets,Excel Formula,Google Sheets Formula,我正在分析一项调查的结果,我有两个数组,现在我正在Excel中计算相关性,这很简单,但我如何计算分散在数组中的子组的相关性,而无需手动执行。例如,我想计算15-25岁男性的两个变量之间的相关性,而不是整个样本 我已经尝试过的是,我根据所需的维度对样本进行排序,这意味着我将按年龄对整个样本进行排序,这样数据将彼此跟随,而不是分散,但这需要时间,并且无法处理年龄和性别等两个变量。您可以这样做: =CORREL(QUERY(A2:C, "select A where B='15-20' an

我正在分析一项调查的结果,我有两个数组,现在我正在Excel中计算相关性,这很简单,但我如何计算分散在数组中的子组的相关性,而无需手动执行。例如,我想计算15-25岁男性的两个变量之间的相关性,而不是整个样本


我已经尝试过的是,我根据所需的维度对样本进行排序,这意味着我将按年龄对整个样本进行排序,这样数据将彼此跟随,而不是分散,但这需要时间,并且无法处理年龄和性别等两个变量。您可以这样做:

=CORREL(QUERY(A2:C, "select A where B='15-20' and C='F'", 0),
        QUERY(D2:F, "select D where E='15-20' and F='F'", 0))
=CORREL(FILTER(A2:A, B2:B="15-20", C2:C="F"),
        FILTER(D2:D, E2:E="15-20", F2:F="F"))
或者像这样:

=CORREL(QUERY(A2:C, "select A where B='15-20' and C='F'", 0),
        QUERY(D2:F, "select D where E='15-20' and F='F'", 0))
=CORREL(FILTER(A2:A, B2:B="15-20", C2:C="F"),
        FILTER(D2:D, E2:E="15-20", F2:F="F"))
但只有当这两个数组的矩阵相等时,这才有效。。。
CORREL
函数的问题是,它需要大小相等的范围,但当您
筛选它或
查询它时,输出范围将不同

然后你可以试试这个:

=IFERROR(CORREL(QUERY({A2:C}, "select Col1 where Col2='15-20' and Col3='F'", 0),
               {QUERY({D2:F}, "select Col1 where Col2='15-20' and Col3='F'", 0);
                TRANSPOSE(SPLIT(REPT("♂♀",
                COUNTA(QUERY({A2:C}, "select Col1 where Col2='15-20' and Col3='F'", 0))-
                COUNTA(QUERY({D2:F}, "select Col1 where Col2='15-20' and Col3='F'", 0))),"♀"))}),
         CORREL(QUERY({D2:F}, "select Col1 where Col2='15-20' and Col3='F'", 0),
               {QUERY({A2:C}, "select Col1 where Col2='15-20' and Col3='F'", 0);
                TRANSPOSE(SPLIT(REPT("♂♀",
                COUNTA(QUERY({D2:F}, "select Col1 where Col2='15-20' and Col3='F'", 0))-
                COUNTA(QUERY({A2:C}, "select Col1 where Col2='15-20' and Col3='F'", 0))),"♀"))}))

注意:遗憾的是,即使这样也有自己的局限性

为了获得最大的舒适度,您可以使用它:

=IFERROR(IFERROR(CORREL(QUERY({A2:C}, "select Col1 where Col2='"&H9&"' and Col3='"&H10&"'", 0),
               {QUERY({D2:F}, "select Col1 where Col2='"&I9&"' and Col3='"&I10&"'", 0);
                TRANSPOSE(SPLIT(REPT("♂♀",
                COUNTA(QUERY({A2:C}, "select Col1 where Col2='"&H9&"' and Col3='"&H10&"'", 0))-
                COUNTA(QUERY({D2:F}, "select Col1 where Col2='"&I9&"' and Col3='"&I10&"'", 0))),"♀"))}),
         CORREL(QUERY({D2:F}, "select Col1 where Col2='"&I9&"' and Col3='"&I10&"'", 0),
               {QUERY({A2:C}, "select Col1 where Col2='"&H9&"' and Col3='"&H10&"'", 0);
                TRANSPOSE(SPLIT(REPT("♂♀",
                COUNTA(QUERY({D2:F}, "select Col1 where Col2='"&I9&"' and Col3='"&I10&"'", 0))-
                COUNTA(QUERY({A2:C}, "select Col1 where Col2='"&H9&"' and Col3='"&H10&"'", 0))),"♀"))})),
 IFERROR(CORREL(QUERY({A2:C}, "select Col1 where Col2='"&H9&"' and Col3='"&H10&"'", 0),
                QUERY({D2:F}, "select Col1 where Col2='"&I9&"' and Col3='"&I10&"'", 0)),
         CORREL(QUERY({D2:F}, "select Col1 where Col2='"&I9&"' and Col3='"&I10&"'", 0),
                QUERY({A2:C}, "select Col1 where Col2='"&H9&"' and Col3='"&H10&"'", 0))))


我在两个数组之间使用correl函数,不幸的是,由于数据的保密性,我无法共享该表,但它是一个具有两个数组的常规表,用于关联,数组中的每个元素都具有定义特征,如年龄、性别等,我的意思是=correl()然后,请发布一些模拟数据,向我们展示您正在使用的工具。我决定只使用熊猫,这要容易得多