2016-05-20 5 views
0

Я пытаюсь использовать базовый пакет R на образце набора данных, который у меня есть, для проверки и оценки текущего базового алгоритма, который у меня есть.Приложение 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" 

Мой вопрос, поэтому если любой из вас есть опыт работы с базовым-пакетом и набором данных (молоком) используется и идеи как я могу преобразовать свой набор данных, который структурирован: Date, Visits, Old_baseline_visits Чтобы установить и протестировать базовый алгоритм из R-пакета

ответ

0

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

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(), который возвращает список.

+0

Большое спасибо за ваш ответ! –

 Смежные вопросы

  • Нет связанных вопросов^_^