DiceKriging / Полный полином 2-го порядка

Следующее сообщение появляется при запуске DiceKriging (в R) с полной полинамикой 2-го порядка (2D):

Ошибка в model.frame.default (object, data, xlev = xlev):
Variablenlängen sind unterschiedlich (gefunden für 'I (inputs [, 1] ^ 2)')

На английском:

Переменная длина различается (найдено для 'I (входы [1] ^ 2)')

Сценарий:

#Modeling

    xa<-c(1,2,3,4,5,6)
    xb<-c(1,2,3,4,5,6)
    inputs<-expand.grid(xa,xb)
    output<-c(1,4,7,18,23,35,1,4,9,18,23,35,1,4,7,18,1,35,1,4,7,18,35,35,1,4,7,18,23,35,1,4,7,18,23,35)
    m2 <- km(formula = ~.^2 + I(inputs[,1]^2) + I(inputs[,2]^2), design = data.frame(x = inputs), response = output)

#prediction

    x11 <- seq(1,6, by = 0.1)
    x22 <- seq(1,6, by = 0.1)
    DESIGNX <- expand.grid(x11, x22)
    newdata <- data.frame(x = DESIGNX)
    DESIGNY <- predict(m2, newdata, "UK")$mean

#Error in model.frame.default(object, data, xlev = xlev) : 
 # variable lengths differ (found for 'I(inputs[, 1]^2)')

person NMF    schedule 31.08.2016    source источник
comment
Переведите сообщение об ошибке на английский язык.   -  person Sergey    schedule 31.08.2016
comment
Добавлен перевод в теле сообщения   -  person Prune    schedule 02.09.2016


Ответы (1)


Когда вы используете design = data.frame (x = inputs), создается data.frame с именами столбцов x.Var1 и x.Var2. Использование этих имен в формуле решает проблему:

m2 <- km(formula = ~.^2 + I(x.Var1^2) + I(x.Var2^2), design = data.frame(x = inputs), response = output)

Возможно, будет лучше определить свои собственные имена и повторно использовать те же имена в newdata:

design <- data.frame(inputs); names(design) <- c("x1", "x2")
m2 <- km(formula = ~.^2 + I(x1^2) + I(x2^2), design = design, response = output)

newdata <- data.frame(DESIGNX); names(newdata) <- names(design)
DESIGNY <- predict(m2, newdata, "UK")$mean
person Olivier    schedule 05.09.2016