Приложение R-package (базовый уровень) для выборки набора данных

Я пытаюсь использовать базовый пакет R в образце набора данных, который у меня есть, для тестирования и оценки текущего базового алгоритма, который у меня есть.

Я хотел применить алгоритм fillpeaks в качестве линии тренда для сравнения.

bc.fillPeaks <- baseline(milk$spectra[1, drop=FALSE], lambda=6,
                         hwi=50, it=10, int=2000, method="fillPeaks")
plot(bc.fillPeaks)

Но моя проблема в том, что образцы данных, которые у меня есть, не соответствуют матричной структуре, которая используется в примере. Когда я смотрю на data.frame, используемый для примера, я его не понимаю.

'data.frame':   45 obs. of  2 variables
 $ cow    : num  0 0.25 0.375 0.875 0.5 0.75 0.5 0.125 0 0.125 ...
 $ spectra: num [1:45, 1:21451] 1029 371 606 368 554 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : NULL
  .. ..$ : chr  "4999.94078628963" "5001.55954267662" "5003.17856106153" "5004.79784144435" ...
 - attr(*, "terms")=Classes 'terms', 'formula' length 3 cow ~ spectra
  .. ..- attr(*, "variables")= language list(cow, spectra)
  .. ..- attr(*, "factors")= int [1:2, 1] 0 1
  .. .. ..- attr(*, "dimnames")=List of 2
  .. .. .. ..$ : chr [1:2] "cow" "spectra"
  .. .. .. ..$ : chr "spectra"
  .. ..- attr(*, "term.labels")= chr "spectra"
  .. ..- attr(*, "order")= int 1
  .. ..- attr(*, "intercept")= int 1
  .. ..- attr(*, "response")= int 1
  .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
  .. ..- attr(*, "predvars")= language list(cow, spectra)
  .. ..- attr(*, "dataClasses")= Named chr [1:2] "numeric" "nmatrix.21451"
  .. .. ..- attr(*, "names")= chr [1:2] "cow" "spectra"

Поэтому мой вопрос заключается в том, есть ли у кого-либо из вас опыт работы с базовым пакетом и используемым набором данных (молоко), а также идеи о том, как я могу преобразовать свой набор данных, который структурирован: дата, посещения, старые_базовые_посещения. Чтобы подогнать и протестировать базовый алгоритм из R-пакет


person David Williams    schedule 20.05.2016    source источник


Ответы (1)


Я использовал базовый уровень и сначала нашел его немного запутанным, особенно данные примера. Как сказано в файле справки, для базовой линии требуется матрица со спектрами в строках. Даже если у вас есть только один «спектр», он должен быть в виде однострочной матрицы. Попробуй это:

foo <- data.frame(Date=seq.Date(as.Date("1957-01-01"), by = "day", 
                            length.out = ncol(milk$spectra)),
              Visits=milk$spectra[1,],
              Old_baseline_visits=milk$spectra[1,], row.names = NULL)
foo.t <- t(foo$Visits) # Visits in a single row matrix 
bc.fillPeaks <- baseline(foo.t, lambda=6,
                     hwi=50, it=10, int=2000, method='fillPeaks')
plot(bc.fillPeaks)

Если вы хотите вернуть базовый и скорректированный спектры в исходный фрейм данных, попробуйте следующее:

foo$New_baseline <- c(getBaseline(bc.fillPeaks))
foo$New_corrected <- c(getCorrected(bc.fillPeaks))
plot(foo$Date, foo$New_corrected, "l")

В качестве альтернативы, если вам не нужен базовый объект, вы можете использовать baseline.fillPeaks(), который возвращает список.

person Knackiedoo    schedule 20.05.2016
comment
Большое спасибо за ответ! - person David Williams; 25.05.2016