【问题标题】:DiceKriging / Full 2nd order polynomialDiceKriging / 全二阶多项式
【发布时间】:2016-08-31 14:31:17
【问题描述】:

使用完整的二阶多项式 (2D) 运行 DiceKriging(在 R 中)时出现以下消息:

model.frame.default 中的错误(对象,数据,xlev = xlev):
Variablenlängen sind unterschiedlich (gefunden für 'I(inputs[, 1]^2)')

英文:

可变长度不同(针对 'I (inputs [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)')

【问题讨论】:

  • 请将错误信息翻译成英文。
  • 在帖子正文中添加了翻译

标签: r kriging


【解决方案1】:

当您使用 design = data.frame(x = inputs) 时,这将创建一个列名为 x.Var1 和 x.Var2 的 data.frame。在公式中使用这些名称可以解决问题:

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

【讨论】:

    猜你喜欢
    • 2021-07-07
    • 1970-01-01
    • 2014-01-09
    • 2022-10-24
    • 2021-07-25
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    相关资源
    最近更新 更多