我正在处理非正态分布的数据。我应用了常用方法:对数和平方根来转换数据,然后用 ARIMA 模型对其进行处理,以便进行预测。
我尝试过的是:
set.seed(123)
y<-rexp(200)
yl<-log(y+1)
shapiro.test(yl)
trans<-(y-mean(y))/sd(y)
shapiro.test(trans)
这种方法未能通过正态性测试,我想问一下是否还有其他选项可以将数据转换为 R 中的正常数据。
我正在处理非正态分布的数据。我应用了常用方法:对数和平方根来转换数据,然后用 ARIMA 模型对其进行处理,以便进行预测。
我尝试过的是:
set.seed(123)
y<-rexp(200)
yl<-log(y+1)
shapiro.test(yl)
trans<-(y-mean(y))/sd(y)
shapiro.test(trans)
这种方法未能通过正态性测试,我想问一下是否还有其他选项可以将数据转换为 R 中的正常数据。
您可以尝试使用具有BoxCox.lambda函数来处理 BoxCox 转换的预测包。缩放/重新缩放是自动完成的。例子:
require(forecast)
y <- ts(rnorm(120,0,3) + 20*sin(2*pi*(1:120)/12), frequency=12) + runif(120)
lambda <- BoxCox.lambda(y) # should check if the transformation is necessary
model <- auto.arima(y, lambda = lambda)
plot(forecast(model))