【问题标题】:R Mclust - getting svd error 'infinite or missing value'R Mclust - 得到 svd 错误“无限或缺失值”
【发布时间】:2015-06-27 07:46:07
【问题描述】:

我正在使用 Mclust 函数(来自 mclust 包)来执行混合高斯聚合。数据集由 21000+ 行 10 列组成。

我收到以下错误:

Error in svd(shape.o, nu = 0) : infinite or missing values in 'x'

奇怪的是: 1) 我检查了 NaN、Inf 等,但没有 2)如果我为 9 个变量运行模型,它运行良好,当我添加一个 var 时,我得到了错误。我尝试了一组不同的附加变量,但得到了同样的错误......

你们知道出了什么问题吗? 非常感谢。

编辑变量

> str(data_scaled[data_subset, model_variables])
'data.frame':   21304 obs. of  12 variables:
 $ PROD_ALL_OR_NOTHING_PERC: num  -0.064 -0.064 -0.064 -0.064 0.141 ...
 $ PROD_CASH_3_PERC        : num  -0.212 -0.212 -0.212 1.303 0.686 ...
 $ PROD_CASH_4_PERC        : num  -0.18 -0.18 -0.18 1.09 8.75 ...
 $ PROD_EINSTANTS_PERC     : num  -0.502 0.68 2.329 -0.582 -0.582 ...
 $ PROD_FANTASY_5_PERC     : num  -0.6517 -0.5562 -0.4928 0.0267 -0.6517 ...
 $ PROD_GEORGIA_5_PERC     : num  -0.0563 -0.0563 -0.0563 -0.0563 6.3148 ...
 $ PROD_KENO_PERC          : num  2.208 1.125 -0.664 0.624 -0.664 ...
 $ PROD_MEGA_MILLION_PERC  : num  -0.687 -0.687 -0.687 -0.523 -0.687 ...
 $ PROD_POWERBALL_PERC     : num  -0.886 -0.886 -0.514 -0.682 -0.886 ...
 $ AVG_WAGER               : num  -0.136 -0.422 -0.416 -0.467 -0.582 ...
 $ DEPOSIT_AMOUNT          : num  0.3984 0.0928 -0.1745 0.8043 1.2674 ...
 $ DEPOSIT_NUM             : num  0.485 0.955 -0.22 1.659 3.773 ...

> summary(data_scaled[data_subset, model_variables])
 PROD_ALL_OR_NOTHING_PERC PROD_CASH_3_PERC  PROD_CASH_4_PERC  PROD_EINSTANTS_PERC PROD_FANTASY_5_PERC
 Min.   :-0.06402         Min.   :-0.2122   Min.   :-0.1801   Min.   :-0.5819     Min.   :-0.6517    
 1st Qu.:-0.06402         1st Qu.:-0.2122   1st Qu.:-0.1801   1st Qu.:-0.5819     1st Qu.:-0.6517    
 Median :-0.06402         Median :-0.2122   Median :-0.1801   Median :-0.5819     Median :-0.5146    
 Mean   : 0.00000         Mean   : 0.0000   Mean   : 0.0000   Mean   : 0.0000     Mean   : 0.0000    
 3rd Qu.:-0.06402         3rd Qu.:-0.2122   3rd Qu.:-0.1801   3rd Qu.: 0.1934     3rd Qu.: 0.3021    
 Max.   :33.08348         Max.   : 7.3222   Max.   :11.5193   Max.   : 2.8354     Max.   : 3.6404    
 PROD_GEORGIA_5_PERC PROD_KENO_PERC    PROD_MEGA_MILLION_PERC PROD_POWERBALL_PERC   AVG_WAGER       
 Min.   :-0.05627    Min.   :-0.6644   Min.   :-0.6873        Min.   :-0.8861     Min.   :-0.62837  
 1st Qu.:-0.05627    1st Qu.:-0.6644   1st Qu.:-0.6873        1st Qu.:-0.8861     1st Qu.:-0.45222  
 Median :-0.05627    Median :-0.6644   Median :-0.4302        Median :-0.4078     Median :-0.29270  
 Mean   : 0.00000    Mean   : 0.0000   Mean   : 0.0000        Mean   : 0.0000     Mean   : 0.00000  
 3rd Qu.:-0.05627    3rd Qu.: 0.4445   3rd Qu.: 0.3513        3rd Qu.: 0.6892     3rd Qu.: 0.07956  
 Max.   :60.46933    Max.   : 2.2766   Max.   : 4.3167        Max.   : 2.4615     Max.   :31.21876  
 DEPOSIT_AMOUNT     DEPOSIT_NUM     
 Min.   :-0.1746   Min.   :-0.2198  
 1st Qu.:-0.1746   1st Qu.:-0.2198  
 Median :-0.1746   Median :-0.2198  
 Mean   : 0.0000   Mean   : 0.0000  
 3rd Qu.:-0.1746   3rd Qu.:-0.2198  
 Max.   :36.2089   Max.   :23.5029  

【问题讨论】:

  • 您可以编辑您的帖子以添加str(data)head(data) 吗?
  • 您的问题在这里得到解答:stackoverflow.com/questions/21423375/…
  • Seth 的链接答案中的响应涉及常量值列;这个问题的总结表明这是一个不同的问题。我怀疑 MClust 正在运行一个内部子集,该子集导致在一个常量值列中,可能是由于源数据的值大部分为零。我有类似的问题,希望避免删除稀有列,因为它很重要。

标签: r svd


【解决方案1】:

r 似乎不喜欢太接近零的数字。我发现如果你将参数乘以 10 或更多,我可以避免错误

BICCtrSD = mclustBIC(Ipsative)

fitting ...
  |=========                                        |  18%Error in svd(shape.o, nu = 0) : infinite or missing values in 'x'

BICCtrSD = mclustBIC(Ipsative*10)

fitting ...
  |=================================================| 100%

但不要忘记,您在查看结果统计数据时已经转换了数据。

这本身可能更像是一种 hack,而不是解决方案。

【讨论】:

  • 需要解释。请添加它以防止进一步被否决并让您摆脱“低质量审查角落”。
猜你喜欢
  • 2011-12-04
  • 2014-02-20
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 2015-01-27
  • 1970-01-01
相关资源
最近更新 更多