Выполнение следующего кода дает мне NaN
:
library(KernSmooth)
x <- c(5.84155992364115, 1.55292112974119, 0.0349665318792623, 3.93053647398094,
3.42790577684633, 2.9715553006801, 0.837108410045353, 2.872476865277,
3.89232548092257, 0.206399650539628)
y <- c(0.141415317472329, 1.34799648955049, 0.0297566221758204,
-0.966736679061812, 0.246306732122746, 0.557982376254723,
0.740542828791083, 0.162336127802977, -0.428804158514744,
0.691280978689863)
locpoly(x, y, bandwidth = 0.4821232, gridsize = 12, degree = 1)[['y']]
я получил
[1] 0.3030137 0.6456624 0.9530586 1.1121106 0.8120947 0.4441603
[7] 0.1425592 -0.3600028 -0.7840411 -1.0517612 -1.2690134 NaN
На другом компьютере я получаю то же самое, за исключением того, что я получаю -0.7270521
вместо NaN
. Я предполагаю, что большинство из вас также получат это. Итак, вопрос в том, как мне исправить мою сломанную систему? Это связано с моим LAPACK или LIBBLAS?
Обратите внимание, что на обоих компьютерах, упомянутых выше, используется Ubuntu. Тот, который дал NaN
, использует Ubuntu 13.10, тот, который дал номер, — 12.04.
РЕДАКТИРОВАТЬ:
Мое новое подозрение заключается в том, что это проблема вычисления с плавающей запятой: локальная полиномиальная регрессия — это просто взвешенная линейная регрессия, где веса уменьшаются по мере удаления точки от точки оценки, в данном случае 5,84. Следует отметить, что полоса пропускания мала, поэтому первая мысль состоит в том, что в пределах полосы пропускания нет точек. Однако locpoly использует ядро Гаусса, так что все точки имеют строго положительный вес. Я предполагаю, что веса настолько малы, что округление или вычисление с плавающей запятой могут быть проблемой. Я не уверен, как это исправить.
NaN
, работая под Linux. - person Rich Scriven   schedule 16.03.2014NaN
. - person hrbrmstr   schedule 22.03.2014