Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
Announcements
FPGA community forums and blogs have moved to the Altera Community. Existing Intel Community members can sign in with their current credentials.

Correlation

JohnNichols
Valued Contributor III
894 Views
!===============================================================================
! Copyright 2003-2020 Intel Corporation.
!
! This software and the related documents are Intel copyrighted  materials,  and
! your use of  them is  governed by the  express license  under which  they were
! provided to you (License).  Unless the License provides otherwise, you may not
! use, modify, copy, publish, distribute,  disclose or transmit this software or
! the related documents without Intel's prior written permission.
!
! This software and the related documents  are provided as  is,  with no express
! or implied  warranties,  other  than those  that are  expressly stated  in the
! License.
!===============================================================================

!  Content:
!    Calculation of correlation matrix  Example Program Text
!******************************************************************************/

      include 'mkl_vsl.f90'
      include "errcheck.inc"
      include "generatedata.inc"
      include "statchars.inc"

      program MKL_VSL_TEST

      USE MKL_VSL_TYPE
      USE MKL_VSL

      integer,parameter :: DIM = 3        ! Task dimension
      integer,parameter :: NN  = 10000    ! Number of observations

      real(kind=8),parameter :: P_THRESHOLD = 0.01

      real(kind=8) C(DIM*DIM)             ! Exact covariance matrix
      data C  / 16.0,  8.0,  4.0,                                       &
     &           8.0, 13.0, 17.0,                                       &
     &           4.0, 17.0, 62.0 /

      real(kind=8) a(DIM)                 ! Exact mean
      data a  / 3.0, 5.0, 2.0 /

      TYPE(VSL_SS_TASK) task
      integer p
      integer n
      integer x_storage
      integer cov_storage
      integer cor_storage
      real(kind=8) x(DIM,NN)
      real(kind=8) cov(DIM,DIM), cor(DIM,DIM)
      real(kind=8) mean(DIM), temp
      integer i, j
      integer(kind=4) errcode
      integer errnums
      integer(kind=8) task_params
      integer task_method

      real(kind=8) pval_mean(DIM)
      real(kind=8) pval_cov(DIM,DIM)

!     ***** Initialize parameters of Summary Statistics task *****
      p = DIM
      n = NN
      x_storage   = VSL_SS_MATRIX_STORAGE_COLS
      cov_storage = VSL_SS_MATRIX_STORAGE_FULL
      cor_storage = VSL_SS_MATRIX_STORAGE_FULL
      task_params = ior( VSL_SS_COV, VSL_SS_COR )
      task_method = VSL_SS_METHOD_FAST
      errcode     = 0

!     ***** Generate data set using VSL GaussianMV RNG *****
      errcode = dGenerateGaussianMVData( p, n, x, a, C )
      call CheckVslError( errcode )

!     ***** Create Summary Statistics task *****
      errcode = vsldssnewtask( task, p, n, x_storage, x )
      call CheckVslError( errcode )

!     ***** Initialization of the task parameters using FULL_STORAGE
!           for covariance/correlation matrices *****
      errcode = vsldsseditcovcor( task, mean, cov, cov_storage,         &
     &                            cor, cor_storage )
      call CheckVslError( errcode )

!     ***** Compute covariance/correlation matrices using FAST method  *****
      errcode = vsldsscompute( task, task_params, task_method )
      call CheckVslError( errcode )

!     ***** Testing stat characteristics of mean and covariance matrix *****
      call dComputePvalsMean( p, n, mean, a, C, pval_mean )
      call dComputePvalsVariance( p, n, cov, C, pval_cov )
      call dComputePvalsCovariance( p, n, cov, C, pval_cov )

      errnums = 0
      do i = 1, p
        if ( pval_mean(i) < P_THRESHOLD ) then
          errnums = errnums + 1
        end if
        do j = 1, i
          if ( pval_cov(i,j) < P_THRESHOLD ) then
            errnums = errnums + 1
          end if
        end do
      end do

!     ***** Printing results *****
      print *, 'Task dimension :         ', p
      print *, 'Number of observations : ', n
      print *, ''

!     ***** Print the exact mean, covariance and correlation matrices *****
      print *, 'Exact means'
      do i = 1, p
         print 5, a(i), ' '
      end do

      print *, ''
      print *, ''

      print *, ' Exact covariance matrix         ',                     &
     &         ' Exact correlation matrix'
      do i = 1, p
        do j = 1, p
            print 5, C((j - 1)*p + i), ' '
        end do
        print 6, '   '
        do j = 1, p
          temp = 1.0
          if ( j /= i ) then
            temp = sqrt( C((i - 1)*p + i) * C((j - 1)*p + j) )
          end if
          print 5, C((j - 1)*p + i) / temp, ' '
        end do
        print *, ''
      end do

      print *, ''

!     ***** Print the computed mean, covariance and correlation matrices *****
      print *, ' Computed means'
      do i = 1, p
         print 5, mean(i), ' '
      end do

      print *, ''
      print *, ''

      print *, ' Computed covariance matrix      ',                     &
     &         ' Computed correlation matrix'
      do i = 1, p
        do j = 1, p
          print 5, cov(i, j), ' '
        end do
        print 6, '   '
        do j = 1, p
          print 5, cor(i, j), ' '
        end do
        print *, ''
      end do

      print *,''

      print *, 'P-values of the computed means'
      do i = 1, p
        print 5, pval_mean(i), ' '
      end do

      print *, ''
      print *, ''

      print *, 'P-values of the computed covariance matrix'
      do i = 1, p
        do j = 1, i
          print 5, pval_cov(i, j), ' '
        end do
        print *, ''
      end do

      print *, ''

!     ***** Printing summary of the test *****
      if ( errnums == 0 ) then
        print *, ' Mean and covariance estimates agree with theory'
      else
        print *, ' Error: Mean and/or covariance estimates',            &
     &           ' disagree with theory'
        stop 1
      end if

!     ***** Delete Summary Statistics task *****
      errcode = vslssdeletetask( task )
      call CheckVslError( errcode )

      call MKL_FREE_BUFFERS()

5     format (F9.6,A,$)
6     format (A,$)

      end

 

Does this correlation function work if the data includes a sine wave in the random data?  

0 Kudos
3 Replies
JohnNichols
Valued Contributor III
894 Views

N the Intel Fortran Forum -- I get an error on trying to post a new topic 

Old form please resubmit  

I have rebooted and done a scannow and it still happens

any ideas?

0 Kudos
JohnNichols
Valued Contributor III
894 Views

No nothing will post in the Fortran Forum 

0 Kudos
Gennady_F_Intel
Moderator
894 Views

>>Does this correlation function work if the data includes a sine wave in the random data?  

<< yes, it does

0 Kudos
Reply