我有一個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