作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
str(ScottsCk_flow_1-6ren">
我有一个流数据向量(29 个数据)和一个 3D 矩阵数据(360*180*29)
我想找到单个向量和3D向量之间的相关性。相关矩阵的大小为 360*180。
> str(ScottsCk_flow_1981_2010_JJA)
num [1:29] 0.151 0.644 0.996 0.658 1.702 ...
> str(ssta_winter)
num [1:360, 1:180, 1:29] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
> summary(ssta_winter)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
-2.8 -0.2 0.1 0.2 0.6 6.0 596849.0
上面是向量和3D矩阵的结构。 3D 矩阵有很多 Null 值。
> for (i in 1:360) {
+ for(j in 1:180){
+ cor_ScottsCk_SF_SST_JJA[i,j] = cor(ScottsCk_flow_1981_2010_JJA,ssta_winter[i,j,])
+ }
+ }
There were 50 or more warnings (use warnings() to see the first 50)
上面这部分代码就是查找相关性的代码。但它给出的警告为
> warnings()
Warning messages:
1: In cor(ScottsCk_flow_1981_2010_JJA, ssta_winter[i, j, ... :
the standard deviation is zero
2: In cor(ScottsCk_flow_1981_2010_JJA, ssta_winter[i, j, ... :
the standard deviation is zero
3: In cor(ScottsCk_flow_1981_2010_JJA, ssta_winter[i, j, ... :
the standard deviation is zero
4: In cor(ScottsCk_flow_1981_2010_JJA, ssta_winter[i, j, ... :
the standard deviation is zero
5: In cor(ScottsCk_flow_1981_2010_JJA, ssta_winter[i, j, ... :
the standard deviation is zero
而且,相关矩阵的结果全部为NULL。这是怎么发生的?
> str(cor_ScottsCk_SF_SST_JJA)
num [1:360, 1:180] NA NA NA NA NA NA NA NA NA NA ...
我使用了完全相同的代码 bfr 和 350 流向量和 360*180*350 矩阵。这段代码完美运行。
最佳答案
一些想法。
首先,通过使用 apply()
,您可以将嵌套循环替换为如下内容:
cor_ScottsCk_SF_SST_JJA <-
apply(ssta_winter, MARGIN = 1:2, FUN = cor, ScottsCk_flow_1981_2010_JJA)
其次,ssta_winter
中超过 31% (596849/(360*180*29)
) 的点似乎是 NaN
或(可能)NA_real_
。给定对包含单个 NaN
的向量计算的相关性的返回值,
cor(c(1:3, NaN), c(1:4))
# [1] NA
所有这些 NaN
是否都可能导致 cor_ScottsCk_SF_SST_JJA
被 NA
填充?
第三,正如警告消息清楚地告诉您的那样,您传递给 cor()
的一些向量的方差为零。它们与 NaN 无关:如下所示,当涉及 NaN 时,R 不会提示标准差为 0。 (这也是非常明智的,因为您无法计算未定义数字的标准差):
cor(c(NaN, NaN, NaN, NaN), c(1,1,1,1))
# [1] NA
cor(c(1,1,1,1), c(1,2,3,4))
# [1] NA
# Warning message:
# In cor(c(1, 1, 1, 1), c(1, 2, 3, 4)) : the standard deviation is zero
关于r - 警告消息 : "In cor(...): the standard deviation is zero",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9124851/
我是一名优秀的程序员,十分优秀!