R 使用神经网络包时出错

Error in R using neuralnet package

我是 运行 一个使用包 neuralnet.

在 R 中估计神经网络的脚本

我正在使用 Linux OS 脚本如下:

# useful libraries
library("XLConnect")  
library("neuralnet")

# data loading;
DATA = loadWorkbook("/home/quant/Desktop/D.xlsx") # loading sheet;
DATASET = readWorksheet(NN_DATA, sheet = "D") # reading sheet;

NN_DATASET # display the directory;
head(NN_DATASET) # show data;
warnings() # error detection & data quality;

#test set detection;
testset <- NN_DATASET[1:101, ] 

# building the neural networks;
NNET <- neuralnet(y ~ MKTVALUER +  VOLR  + DYR +    PER +   DJR +   DAXR +  MSCIR + NIKKEIR +   CCOR +  CPIR +  CABCR + EGR +   USFFR + USGDPR +    GCIR +  IGR +   IPR +   IRR +   MCURNR +    M2R +   NOMANUFACTORINGR +  PCER +  POPR +  PPIR +  CBLEIR +    DEBTR + UR +    C_XAU + C_XAG + BARCLAYSAGG +   C_USDJPY +  C_EURUSD, NN_DATASET, hidden = 2, lifesign = "minimal", linear.output = FALSE, threshold = 0.1)

一切顺利,直到最后一行,其中R给出了error输出,如下:

Error in x - y : non-conformable arrays

dataframe结构,使用str(NN_DATASET)得到如下:

'data.frame':   201 obs. of  34 variables:
 $ DATA            : chr  "Q4 1964" "Q1 1965" "Q2 1965" "Q3 1965" ...
 $ SP500_R         : num  NA 0.0184 -0.0215 0.0622 0.025 ...
 $ MKTVALUER       : num  NA 0.0257 -0.0206 0.0694 0.0215 ...
 $ VOLR            : num  NA 0.007336 0.000982 0.007239 -0.003561 ...
 $ DYR             : num  NA NA 0.0294 -0.0528 0.0366 ...
 $ PER             : num  NA NA NA NA NA NA NA NA NA NA ...
 $ DJR             : num  NA NA NA NA NA NA NA NA NA NA ...
 $ DAXR            : num  NA NA NA NA NA NA NA NA NA NA ...
 $ MSCIR           : num  NA NA NA NA NA NA NA NA NA NA ...
 $ NIKKEIR         : num  NA NA NA NA NA NA NA NA NA NA ...
 $ CCOR            : num  NA 0.0338 0.0322 0.0247 0.0192 ...
 $ CPIR            : num  NA 0 0.4654 0 0.0565 ...
 $ CABCR           : num  NA -0.2793 0.2268 -0.1893 -0.0123 ...
 $ EGR             : num  NA -0.0895 0.1666 -0.0579 0.0681 ...
 $ USFFR           : num  NA 0.1034 0.02733 -0.00245 0.02427 ...
 $ USGDPR          : num  NA 0.0293 0.0182 0.024 0.0301 ...
 $ GCIR            : num  NA 0.00572 0.01759 0.04266 0.0346 ...
 $ IGR             : num  NA -0.02768 0.10641 0.00942 0.05768 ...
 $ IPR             : num  NA 0.0371 0.0229 0.0207 0.02 ...
 $ IRR             : num  NA 0.00218 0.06536 -0.06318 0.111 ...
 $ MCURNR          : num  NA -0.00201 0.00977 0.01819 0.02592 ...
 $ M2R             : num  NA 0.0166 0.0115 0.0156 0.0186 ...
 $ NOMANUFACTORINGR: num  NA NA NA NA NA NA NA NA NA NA ...
 $ PCER            : num  NA 0.0252 0.0159 0.0208 0.0309 ...
 $ POPR            : num  NA 0.00255 0.00294 0.00352 0.00296 ...
 $ PPIR            : num  NA 0.00297 0.0118 0.00293 0.00873 ...
 $ CBLEIR          : num  NA 0.0224 0.0172 0.0135 0.0272 ...
 $ DEBTR           : num  NA -0.000955 -0.000637 -0.002553 0.013329 ...
 $ UR              : num  NA -0.0202 -0.0417 -0.066 -0.0706 ...
 $ C_XAU           : num  NA 0.00057 0 0 0 ...
 $ C_XAG           : num  NA 0 0 0 0 0 0 0 0 0 ...
 $ BARCLAYSAGG     : num  NA NA NA NA NA NA NA NA NA NA ...
 $ C_USDJPY        : num  NA NA NA NA NA NA NA NA NA NA ...
 $ C_EURUSD        : num  NA NA NA NA NA NA NA NA NA NA ...

在网上浏览我在whosebug.com这里找到了很多答案,但是,在每个情况下,解决方案都是不同的,所以,O发布了一个新问题。请不要将其标记为重复,因为它不是。

该脚本基于 R-Bloggers

上找到的脚本

如有任何帮助、提示或建议,我们将不胜感激。

我在数据集中没有看到您在公式中引用的 y 列。您的目标变量应该存在于您的数据集中。应该是SP500_R

其次,neuralnet 无法在数据中使用 NAs,请先使用 na.omit() 过滤您的数据集。

另外,让我做个旁注:如果我猜对了你的数据,你将不会从那种分析中得到任何东西。