2013-12-19 14 views
0

我正在PHP腳本中運行R中的迴歸模型。事實上,我在執行迴歸...使用if條件在R上執行向量轉換

fit <- lm(VIEWS ~ TREND + STUNDE + WOCHENTAG + MONAT * JAHR) 

...然後對結果應用盒子 - 考克斯改造,獲取有意義在我的情況一定範圍內的「最佳」拉姆達。

bc <- boxcox(fit, lambda = seq(0, 0.5, 0.005)) 
lambda <- bc$x[which.max(bc$y)] 

如果LAMDA不爲0,我申請的實際轉換,一切工作正常:

VIEWS_BOX <- VIEWS^lambda - 1 

我通過VIEWS_BOX更換VIEWS重複迴歸。

我的問題: 我需要爲lambda = 0的情況編寫一個if條件,我讀了很多東西,並嘗試了很多東西,但它不起作用。例如。我試過了:

VIEWS_BOX <- ifelse(rep(lambda = 0, length(VIEWS)), ln(VIEWS), VIEWS^lambda - 1) 

任何人都可以幫我嗎?提前致謝!

回答

0

在您的代碼中,您使用了lambda = 0,但=表示分配。應該是lambda == 0,因爲==意味着比較。

ifelse沒有必要。您可以使用:

VIEWS_BOX <- if (lambda) VIEWS^lambda - 1 else log(VIEWS) 
+0

感謝您的支持,斯文,但仍不能正常工作,我想'VIEWS_BOX < - 如果(拉姆達)的意見^拉姆達 - 1個,否則LN(視圖)'還'VIEWS_BOX < - if(lambda == 0)ln(VIEWS)else VIEWS^lambda - 1',但是R的執行仍然在這一行停止......! – bezoo

+0

我發現這個解決方案:'VIEWS_BOX < - if(lambda == 0)log(VIEWS)else VIEWS^lambda-1' work fine,there is no function'ln(x)'in R:'log(x) '返回自然對數! – bezoo

+0

@bezoo對。我剛剛採用了你的代碼,並假設你已經創建了一個'ln'函數。 –