R/TSD.R

Defines functions NNS.TSD

Documented in NNS.TSD

#' NNS TSD Test
#'
#' Bi-directional test of third degree stochastic dominance using lower partial moments.
#' @param x a numeric vector.
#' @param y a numeric vector.
#' @return Returns one of the following TSD results: \code{"X TSD Y"}, \code{"Y TSD X"}, or \code{"NO TSD EXISTS"}.
#' @keywords stochastic dominance
#' @author Fred Viole, OVVO Financial Systems
#' @references Viole, F. and Nawrocki, D. (2016) "LPM Density Functions for the Computation of the SD Efficient Set." Journal of Mathematical Finance, 6, 105-126. \url{http://www.scirp.org/Journal/PaperInformation.aspx?PaperID=63817}.
#' @examples
#' set.seed(123)
#' x<-rnorm(100); y<-rnorm(100)
#' NNS.TSD(x,y)
#' @export

NNS.TSD <- function(x,y){

  x_sort <- sort(x, decreasing=FALSE)
  y_sort <- sort(y, decreasing=FALSE)

  Combined = c(x_sort,y_sort)
  Combined_sort = sort(Combined, decreasing=FALSE)

  LPM_x_sort=LPM(2,Combined_sort,x)
  LPM_y_sort=LPM(2,Combined_sort,y)

  x.tsd.y=any(LPM_x_sort>LPM_y_sort)

  y.tsd.x=any(LPM_y_sort>LPM_x_sort)



  plot(LPM_x_sort, type = "l", lwd =3,col = "red", main = "TSD", ylab = "Area of Cumulative Distribution",
       ylim = c(min(c(LPM_y_sort,LPM_x_sort)),max(c(LPM_y_sort,LPM_x_sort))))
  lines(LPM_y_sort, type = "l", lwd =3,col = "blue")
  legend("topleft", c("X","Y"), lwd=10,
         col=c("red","blue"))

   ifelse (x.tsd.y==FALSE & min(x)>=min(y) & mean(x)>=mean(y) & !identical(LPM_x_sort,LPM_y_sort),"X TSD Y",
          ifelse (y.tsd.x==FALSE & min(y)>=min(x)& mean(y)>=mean(x) & !identical(LPM_x_sort,LPM_y_sort),"Y TSD X","NO TSD EXISTS"))
}

Try the NNS package in your browser

Any scripts or data that you put into this service are public.

NNS documentation built on Nov. 17, 2017, 5:19 a.m.