⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nn_core.m

📁 使用线性回归的方法对股市短期走势作出预测的程序
💻 M
字号:
%{

DESCRIPTION:

Core function for nn.m

INPUT:
        x - Series to be modelled
        m - Embedding dimension (size of the histories)
        k - The number of nearest neigbours to be used in the construction 
            of the forecasts
        method - The method to be used in the calculations
      
        
 OUTPUT:
        For_x - The one out of sample forecast of x
         
        
POURPOSE: This core function will create each forecast in nn.m

%}

function [For_x]=nn_core(x,m,k,method);


[n1,n2]=size(x);

switch method
    case 'correlation'

        %   Calculation of the correlations between the pieces of the time series.

        chunk = x(n1-m+1:n1,1);
        for i=0:n1-m-1;
            aba=corrcoef(chunk,x(n1-m-i:n1-i-1,1));
            mcorrel(n1-m-i,1)=aba(2,1);
        end;

        mcorrel2=abs(mcorrel);

        %   Find the k max abs correlation and also the piece related to such k correlations.

        [sorted idx] = sort(mcorrel2);

        fullIdx = repmat( idx((end-k+1):end),1,m+1) + repmat([0:m],k,1);

        %   REgression to find the coefficents.
        
        s = x(fullIdx);

        Coefficients = regress(s(:,m+1),[ones(k,1),s(:,m:-1:1)]);

        c = ones(1,m+1);
        c(2:end) = x(n1+2 - [2:m+1]);

        For_x(1,1)=c*Coefficients;

    case 'absolute_distance'
        
        %   Calculation of the sum of distances between the pieces of the time series.

        chunk = x(n1-m+1:n1,1);
        for i=0:n1-m-1;
            distance=sum(abs(chunk-x(n1-m-i:n1-i-1,1)));
            sum_distance(n1-m-i,1)=distance;
        end
        
        % Sort the distances and find the lowests
        
        [sorted idx] = sort(sum_distance,'descend');
        
        % Create a matrix with the indexes of the neighbors found
        
        fullIdx = repmat( idx((end-k+1):end),1,m+1) + repmat([0:m],k,1);
        
        % Grab the values of such neighbors
        
        s = x(fullIdx);
        
        % Calculate the forecast
                
        For_x(1,1)=mean(s(:,m+1));
end
        
        
        
        
        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -