У меня есть вектор с оптимальной лямбдой для преобразования кокса. Это мой лямбда вектор:Применение преобразования Box-Cox к кадру данных с другой лямбда для каждого столбца
lambda <- data.frame(lambda=c(0.01,0.01,0.01))
str(lambda)
#'data.frame': 3 obs. of 1 variable:
#$ lambda: num 0.01 0.01 0.01
У меня также есть данные:
df:
obs1 obs2 obs3
34.3 232.2 2.0
2.1 56.3 90.0
и т.д ...
Тогда у меня есть функция, которая вычисляет Бокса-Кокса преобразования в для столбца:
bc <- function (obs, lambda) {
(obs^lambda-1)/lambda }
Я пытаюсь применить эту функцию ко всему набору данных так:
result <- as.data.frame(lapply(df, function(u) { lapply(lambda, function(v) { bc(u,v) }) }))
Это не похоже на работу, так как я попытался запустить его отдельно на одну колонку, как это:
d <- bc(df[,1],0.01)
Тогда я сделал:
z <- result[,1] == d
table(z)
в результате этого:
FALSE TRUE
3051 2
Так что, в основном, эти два столбца не были одинаковыми.
Я не уверен, почему это происходит.
'mapply (Ьс, ДФ, лямбда $ lambda) '.... и обратите внимание, что дробные степени отрицательных чисел часто являются проблемой. –