R - 相关误差:"x"必须是数字



我有一个XTS数据集,其中包含许多股票收盘价:dataset。然后我想通过cor()找到他们的回报是否有任何相关性,但是我得到一个错误消息:Error in cor(RETS) : 'x' must be numeric

下面是我所做的:

RETS <- CalculateReturns(dataset, method= c("log")) # Calculate returns Via PerformanceAnalytics
RETS<- na.locf(RETS) #Solves missing NAs by carrying forward last observation
RETS[is.na(RETS)] <- "0"  #I then fill the rest of the NAs by adding "0"

以下是RETS的示例

    row.names   A.Close    AA.Close AADR.Close  AAIT.Close   AAL.Close
1   2013-01-01    0            0            0         0         0
2   2013-01-02  0.0035      0.0088      0.0044      -0.00842    0
3   2013-01-03  0.0195      0.0207     -0.002848    -0.00494    0
4   2013-01-06 -0.0072     -0.0174      0.0078      -0.00070    0
5   2013-01-07 -0.0080      0          -0.01106     -0.03353    0
6   2013-01-08  0.0266     -0.002200    0.006655     0.0160     0
7   2013-01-09  0.0073     -0.01218     0.007551     0.013620   0

然后执行关联:

#Perform Correlation
cor(RETS) -> correl
Error in cor(RETS1) : 'x' must be numeric
#Tried using as.numeric
cor(as.numeric(RETS), as.numeric(RETS) -> correl

然而,答案是"1"。我也尝试在psych中使用相关函数,但得到相同的错误信息。

我在结束问题的地方添加了@Roland的答案。

问题是使用
RETS[is.na(RETS)] <- "0"

将所有数据转换为字符,因为向数值添加任何字符值都会自动更改数据。键入一个字符。因此,当你去取相关性时,没有办法对字符值这样做。所以如果你只输入

RETS[is.na(RETS)] <- 0

应该避免转换问题。

与其将丢失的值设置为NA,不如考虑显式地告诉cor如何处理丢失的值。例如

cor(RETS, use="pairwise.complete.obs")

将只计算两个变量之间的相关性,对于那些都不是na的对。有关所有选项,请参阅?cor帮助页面。

相关内容

  • 没有找到相关文章

最新更新