[This article was first published on R-posts.com, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Partial Moments Equivalences
Below are some basic equivalences demonstrating partial moments’ role as the elements of variance.The additional information generated from partial moments permits a level of analysis simply not possible with traditional summary statistics. There is further introductory material on partial moments and their extension into nonlinear analysis & behavioral finance applications available at: Why is this relevant?
https://www.linkedin.com/pulse/elements-variance-fred-viole
Installation
require(devtools); install_github('OVVO-Financial/NNS',ref = "NNS-Beta-Version")
A difference between the upside area and the downside area of f(x). Mean
set.seed(123); x=rnorm(100); y=rnorm(100) > mean(x) [1] 0.09040591 > UPM(1,0,x)-LPM(1,0,x) [1] 0.09040591
A sum of the squared upside area and the squared downside area. Variance
> var(x) [1] 0.8332328 # Sample Variance: > UPM(2,mean(x),x)+LPM(2,mean(x),x) [1] 0.8249005 # Population Variance: > (UPM(2,mean(x),x)+LPM(2,mean(x),x))*(length(x)/(length(x)-1)) [1] 0.8332328 # Variance is also the co-variance of itself: > (Co.LPM(1,1,x,x,mean(x),mean(x))+Co.UPM(1,1,x,x,mean(x),mean(x))-D.LPM(1,1,x,x,mean(x),mean(x))-D.UPM(1,1,x,x,mean(x),mean(x)))*(length(x)/(length(x)-1)) [1] 0.8332328
Standard Deviation
> sd(x) [1] 0.9128159 > ((UPM(2,mean(x),x)+LPM(2,mean(x),x))*(length(x)/(length(x)-1)))^.5 [1] 0.9128159
Covariance
> cov(x,y) [1] -0.04372107 > (Co.LPM(1,1,x,y,mean(x),mean(y))+Co.UPM(1,1,x,y,mean(x),mean(y))-D.LPM(1,1,x,y,mean(x),mean(y))-D.UPM(1,1,x,y,mean(x),mean(y)))*(length(x)/(length(x)-1)) [1] -0.04372107
Covariance Elements and Covariance Matrix
> cov(cbind(x,y)) x y x 0.83323283 -0.04372107 y -0.04372107 0.93506310 > cov.mtx=PM.matrix(LPM.degree = 1,UPM.degree = 1,target = 'mean', variable = cbind(x,y), pop.adj = TRUE) > cov.mtx $clpm x y x 0.4033078 0.1559295 y 0.1559295 0.3939005 $cupm x y x 0.4299250 0.1033601 y 0.1033601 0.5411626 $dlpm x y x 0.0000000 0.1469182 y 0.1560924 0.0000000 $dupm x y x 0.0000000 0.1560924 y 0.1469182 0.0000000 $matrix x y x 0.83323283 -0.04372107 y -0.04372107 0.93506310
Pearson Correlation
> cor(x,y) [1] -0.04953215 > cov.xy=(Co.LPM(1,1,x,y,mean(x),mean(y))+Co.UPM(1,1,x,y,mean(x),mean(y))-D.LPM(1,1,x,y,mean(x),mean(y))-D.UPM(1,1,x,y,mean(x),mean(y)))*(length(x)/(length(x)-1)) > sd.x=((UPM(2,mean(x),x)+LPM(2,mean(x),x))*(length(x)/(length(x)-1)))^.5 > sd.y=((UPM(2,mean(y),y)+LPM(2,mean(y),y))*(length(y)/(length(y)-1)))^.5 > cov.xy/(sd.x*sd.y) [1] -0.04953215
A normalized difference between upside area and downside area. Skewness*
> skewness(x) [1] 0.06049948 > ((UPM(3,mean(x),x)-LPM(3,mean(x),x))/(UPM(2,mean(x),x)+LPM(2,mean(x),x))^(3/2)) [1] 0.06049948
UPM/LPM – a more intuitive measure of skewness. (Upside area / Downside area)
> UPM(1,0,x)/LPM(1,0,x) [1] 1.282673
A normalized sum of upside area and downside area. Kurtosis*
> kurtosis(x) [1] -0.161053 > ((UPM(4,mean(x),x)+LPM(4,mean(x),x))/(UPM(2,mean(x),x)+LPM(2,mean(x),x))^2)-3 [1] -0.161053
CDFs
> P=ecdf(x) > P(0);P(1) [1] 0.48 [1] 0.83 > LPM(0,0,x);LPM(0,1,x) [1] 0.48 [1] 0.83 # Vectorized targets: > LPM(0,c(0,1),x) [1] 0.48 0.83 # Joint CDF: > Co.LPM(0,0,x,y,0,0) [1] 0.28 # Vectorized targets: > Co.LPM(0,0,x,y,c(0,1),c(0,1)) [1] 0.28 0.73
PDFs
> tgt=sort(x) # Arbitrary d/dx approximation > d.dx=(max(x)+abs(min(x)))/100 > PDF=(LPM.ratio(1,tgt+d.dx,x)-LPM.ratio(1,tgt-d.dx,x)) > plot(sort(x),PDF,col='blue',type='l',lwd=3,xlab="x")
Numerical Integration – [UPM(1,0,f(x))-LPM(1,0,f(x))]=[F(b)-F(a)]/[b-a]
# x is uniform sample over interval [a,b]; y = f(x) > x=seq(0,1,.001);y=x^2 > UPM(1,0,y)-LPM(1,0,y) [1] 0.3335
Bayes’ Theoremhttps://github.com/OVVO-Financial/NNS/blob/NNS-Beta-Version/examples/Bayes’%20Theorem%20From%20Partial%20Moments.pdf
*Functions are called from the PerformanceAnalytics package
require(PerformanceAnalytics)
To leave a comment for the author, please follow the link and comment on their blog: R-posts.com.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.