Язык R и закон Бенфорда: предупреждение при реализации программы

#r #benford.analysis

#r #benford.analysis

Вопрос:

Кто-нибудь может мне помочь? В моем коде есть несколько предупреждений. Как я могу решить эти проблемы? Входными данными является простой вектор 1 * 196608, который извлекается из Matlab.

предупреждения:

 1: In empirical.distribution$dist.freq - benford.dist.freq :
  longer object length is not a multiple of shorter object length

2: In ((empirical.distribution$dist.freq - benford.dist.freq)^2)/benford.dist.freq :
  longer object length is not a multiple of shorter object length

3: In empirical.distribution$dist - benford.dist :
  longer object length is not a multiple of shorter object length

4: In as.data.table.list(x, keep.rownames = keep.rownames,  ... :
  Item 1 has 9 rows but longest item has 10; recycled with remainder
  

Мой код:

 library(benford.analysis)
library(R.matlab)
f=readMat('vectorimage.mat')
s=f$vectorimage
y=as.numeric(s);#convert to numeric type
d=benford(y,number.of.digits = 1)
print(d)
plot(d)
  

Комментарии:

1. выходной рисунок: i.stack.imgur.com/zLYnI.png

2. собираетесь ли вы соединить R с matlab в этом коде?

3. Нет. Я использовал MATLAB только для генерации данных. Предположим, что эти данные являются простыми данными

4. Код невоспроизводим, можете ли вы дать некоторое представление о том, как выглядят ваши данные? может быть как head (y) или str(y)

5. ОК. пожалуйста, посмотрите данные моей формы по этой ссылке: i.stack.imgur.com/cE6dE.png

Ответ №1:

Основываясь на ваших данных, я думаю, что у вас есть отрицательные и положительные значения, различающиеся по y, которые, вероятно, распределены нормально, поэтому вы можете изменить benford следующим образом:

 benford(y, number.of.digits = 3, sign = "both", discrete=TRUE, round=3)