我有一个data.frame中的气候数据的数据集(列是测量站,行表示测量的时间),我试图在Yeo-Johnson变换中找到合适的lambda值以限制主成分分析中的偏态影响。R问题:执行LM然后boxcox找到正确的lambda值
显然,第一步是获取登录可能性找到最好的λ:我用以下,其中i是列索引:
getYeoJohsnonLambda <- function(myClimateData,cols,lambda_min, lambda_max,eps)
...
lambda <- seq(lambda_min,lambda_max,eps)
for(i in cols)
{
formula <- as.formula(paste("myClimateData$",colnames(myClimateData)[i],"~1"))
currentModel <- lm(formula,myClimateData)
print(currentModel)
myboxCox <- boxCox(currentModel, lambda = lambda ,family="yjPower", plotit = FALSE)
...
}
当我试图把它的这可能是climateData时间序列,例如:
`climateData <-data.frame(c(8.2,6.83,5.46,4.1,3.73,3.36,3,3,3,3,3.7),c(0,0.66,1.33,2,2,2,2,2,2,2,1.6))`
我得到这个错误:Error in is.data.frame(data) : object 'myClimateData' not found
这很奇怪,因为LM似乎找到它,并返回一个科尔ect fit和myClimateData应该被找到,因为它是函数的参数之一,对吧?
问题在于你如何形成你的公式:'公式< - as.formula(paste(“myClimateData $”,colnames(myClimateData)[i],“〜1”))''。相反,尝试类似'lm(as.formula(paste(colnames(climateData)[1],“〜1”)),data = myClimateData) –
我试图改变为: \t \t'currentModel < - lm as.formula(膏(colnames(myClimateData)[I], “〜1”)),数据= myClimateData) \t \t打印(currentModel) \t \t myboxCox < - boxCox(currentModel,λ-=拉姆达,家族= “yjPower”,plotit = FALSE) 但我仍然有同样的错误:在BoxCox行中发现is.data.frame(x):object'myClimateData'找不到对象'。 这真的很奇怪,因为“myClimateData”是函数参数之一。 – qwartz