Err*_*404 11 r matrix correlation na
我正在为我的数据建立一个相关矩阵,看起来像这样
df <- structure(list(V1 = c(56, 123, 546, 26, 62, 6, NA, NA, NA, 15
), V2 = c(21, 231, 5, 5, 32, NA, 1, 231, 5, 200), V3 = c(NA,
NA, 24, 51, 53, 231, NA, 153, 6, 700), V4 = c(2, 10, NA, 20,
56, 1, 1, 53, 40, 5000)), .Names = c("V1", "V2", "V3", "V4"), row.names = c(NA,
10L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)
这给出了以下数据框:
V1 V2 V3 V4
1 56 21 NA 2
2 123 231 NA 10
3 546 5 24 NA
4 26 5 51 20
5 62 32 53 56
6 6 NA 231 1
7 NA 1 NA 1
8 NA 231 153 53
9 NA 5 6 40
10 15 200 700 5000
Run Code Online (Sandbox Code Playgroud)
我通常使用complete.obs命令来使用此命令建立我的相关矩阵
crm <- cor(df, use="complete.obs", method="pearson")
Run Code Online (Sandbox Code Playgroud)
我的问题是,complete.obs如何处理数据?它是否省略了具有"NA"值的任何行,制作一个"NA"自由表并立即制作相关矩阵?
df2 <- structure(list(V1 = c(26, 62, 15), V2 = c(5, 32, 200), V3 = c(51,
53, 700), V4 = c(20, 56, 5000)), .Names = c("V1", "V2", "V3",
"V4"), row.names = c(NA, 3L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)
或者它是否以成对的方式省略"NA"值,例如,当计算V1和V2之间的相关性时,V3中包含NA值的行(例如我的示例中的行1和2)是否也会被省略?
如果是这种情况,我期待通过以成对方式省略NA值来建立尽可能多地保留数据的命令.
非常感谢,
csg*_*pie 18
查看帮助文件cor
,即?cor
.特别是,
如果'use'是''everything"','NA'将在概念上传播,即,只要其贡献的观察之一是'NA',结果值就是'NA'.
如果'use'是''all.obs'',则缺少观察的存在将产生错误.如果'use'是'"complete.obs"',那么缺失值将通过casewise删除来处理(如果没有完整的情况,则会产生错误).
为了更好地了解正在发生的事情,创建一个(甚至)更简单的例子:
df1 = df[1:5,1:3]
cor(df1, use="pairwise.complete.obs", method="pearson")
cor(df1, use="complete.obs", method="pearson")
cor(df1[3:5,], method="pearson")
Run Code Online (Sandbox Code Playgroud)
因此,当我们使用时complete.obs
,如果存在,我们将丢弃整行NA
.在我的例子中,这意味着我们丢弃行1和2.然而,pairwise.complete.obs
使用非NA
计算之间的相关值时V1
和V2
.