|
source("lstar_newmodel.R")
data=read.table("data.txt", header = TRUE)
x <- data$cpi
y <- data$rpi
z <- data$m2
cpi.lstar <- lstar(x, m=2,d=1, thVar=z,control=list(maxit=3000))
cpi.lstar
names(cpi.lstar)
#[1] "str" "coefficients" "fitted.values" "residuals" "k"
#[6] "model" "model.specific"
g=cpi.lstar$coefficients[7]
th=cpi.lstar$coefficients[8]
gfun <- function(y, g, th) 1 / (1 + exp(-g*(y-th)))
G=gfun(z,g,th)
par(mfrow=c(2,1))
plot(G,type = "l", col = "red")
plot(G,z)
#########Statistical Tests:
library(fGarch)
# Lagged Series:
.tslagGarch = function (x, k = 1) {
ans = NULL
for (i in k) ans = cbind(ans, .tslag1Garch(x, i))
indexes = (1:length(ans[, 1]))[!is.na(apply(ans, 1, sum))]
ans = ans[indexes, ]
if (length(k) == 1) ans = as.vector(ans)
ans }
.tslag1Garch = function (x, k) {
c(rep(NA, times = k), x[1:(length(x) - k)]) }
# Statistical Tests:
cat("\n Residuals Tests:\n")
r.s = cpi.lstar$residuals
ans = NULL
# Normality Tests:
jbtest = jarqueberaTest(r.s)@test
ans = rbind(ans, c(jbtest[1], jbtest[2]))
if (length(r.s) < 5000) {
swtest = shapiro.test(r.s)
if (swtest[2] < 2.6e-16) swtest[2] = 0
ans = rbind(ans, c(swtest[1], swtest[2]))
} else {
ans = rbind(ans, c(NA, NA))
}
# Ljung-Box Tests:
box10 = Box.test(r.s, lag = 10, type = "Ljung-Box")
box15 = Box.test(r.s, lag = 15, type = "Ljung-Box")
box20 = Box.test(r.s, lag = 20, type = "Ljung-Box")
ans = rbind(ans, c(box10[1], box10[3]))
ans = rbind(ans, c(box15[1], box15[3]))
ans = rbind(ans, c(box20[1], box20[3]))
box10 = Box.test(r.s^2, lag = 10, type = "Ljung-Box")
box15 = Box.test(r.s^2, lag = 15, type = "Ljung-Box")
box20 = Box.test(r.s^2, lag = 20, type = "Ljung-Box")
ans = rbind(ans, c(box10[1], box10[3]))
ans = rbind(ans, c(box15[1], box15[3]))
ans = rbind(ans, c(box20[1], box20[3]))
# Ljung-Box Tests - tslag required
lag.n = 12
x.s = as.matrix(r.s)^2
n = nrow(x.s)
tmp.x = .tslagGarch(x.s[, 1], 1:lag.n)
tmp.y = x.s[(lag.n + 1):n, 1]
fit = lm(tmp.y ~ tmp.x)
stat = (n-lag.n) * summary.lm(fit)$r.squared
ans = rbind(ans, c(stat, p.value = 1 - pchisq(stat, lag.n)) )
# Add Names:
rownames(ans) = c(
" Jarque-Bera Test R Chi^2 ",
" Shapiro-Wilk Test R W ",
" Ljung-Box Test R Q(10) ",
" Ljung-Box Test R Q(15) ",
" Ljung-Box Test R Q(20) ",
" Ljung-Box Test R^2 Q(10) ",
" Ljung-Box Test R^2 Q(15) ",
" Ljung-Box Test R^2 Q(20) ",
" LM Arch Test R TR^2 ")
colnames(ans) = c("Statistic", "p-Value")
print(ans)
Statistic p-Value
Jarque-Bera Test R Chi^2 3.021414 0.2207539
Shapiro-Wilk Test R W 0.9368604 0.2828191
Ljung-Box Test R Q(10) 8.92331 0.5393969
Ljung-Box Test R Q(15) 20.06886 0.1693071
Ljung-Box Test R Q(20) NA NA
Ljung-Box Test R^2 Q(10) 2.390212 0.9923808
Ljung-Box Test R^2 Q(15) 6.469093 0.970746
Ljung-Box Test R^2 Q(20) NA NA
LM Arch Test R TR^2 5 0.957979
|