【发布时间】:2014-09-07 04:37:19
【问题描述】:
我是 R 的新手,我正在创建一个函数来计算家具指数,试图让它更干净,用户只需要插入调整后的模型。我很难确定模型中的对数转换是自然对数还是任何其他类型,因为索引会根据这些信息发生变化。所以我想用 a=b^1/x 来计算这个信息,其中“a”是对数底,“x”和“b”分别是有/没有对数转换的公式信息。但为此我需要模型的原始值,因为通过使用“model$model”我只能得到对数值。
这是我到目前为止所做的:
furnival=function(object=NULL)
{
w <- object$weights
if(!is.null(object) && is.numeric(object))
stop("'object' must be a formula")
if(is.null(w <- object$weights)){
w <- 1
}else{
w
}
if(length(grep("log", formula(object)))!=0){
y <- as.numeric(as.matrix(object$model[1L]))
modelValues <- object[Something to identify the original value]
routine <- object$model == 1
if(any(routine))
modelValues[!routine]
modelValues <- sample(modelValues,1)
a <- modelValues^(1/y)
if(grep("log", formula(object))[1L]==2)
y <- a^y
if(a == exp(1)){
df <- df.residual(object)
MSE <- sum((residuals(object)^2)*w)
index <- (exp(mean(log(y))))*(sqrt(MSE/df))
return(index)
}else{
df <- df.residual(object)
MSE <- sum((residuals(object)^2)*w)
index <- (a^(mean(log(y,a))))*(sqrt(MSE/df))*(log(exp(1),a)^-1)
return(index)
}
}
else{
df <- df.residual(object)
MSE <- sum((residuals(object)^2)*w)
index <- sqrt((MSE/df))
return(index)
}
}
如果有办法做到这一点,或者即使有更聪明的方法来实现这个功能。
【问题讨论】:
-
你能不能说明你是如何将值传递给这个函数的?也许您可以显示具有不同
logs 的示例模型,并准确显示您希望针对每种不同情况的期望行为。此外,似乎这些代码中的某些代码可能并不真正需要制作 minimal reproducible example。尝试专注于一个非常具体的问题/任务,并删除任何对帮助您解决问题不必要的内容。 -
这是我第一次在这里提出问题,我不太清楚如何问这个问题。不便之处敬请见谅。我正在尝试做的一些示例是这样的: mod
-
如果你从模型中获得两组不同预测值的预测(使用
predict(model, newdata = data.frame(...)),并比较它们?通过明智地选择这两个预测值设置,它应该能够识别出什么基础使用了对数。 -
@somoto 欢迎来到 Stack Overflow。如果人们要求提供更多信息,通常最好编辑您的原始问题以包含所请求的信息或描述。然后,您可以使用他们的“@”用户名添加评论,以通知他们更新。将重要信息放在难以扫描和格式化的 cmets 中并不是一个好主意。