HW1 Script 4
From EVOCD
Script 4
Analytical_model_generation.m
%% Analytical moodel generation clear all load('Al_LHS_v1.mat') fID_Progress = fopen('Progress_Script', 'a'); fprintf(fID_Progress, 'Analytical_Model_Generation_Begin\n'); tic % Generate cubic model clear cub cub(1,1:size(X,2)) = 0; count = 1; for i = 1:size(X,2) count = count + 1; cub(count,i) = 1; end models{1} = cub; % Linear model for i = 1:size(X,2) count = count + 1; cub(count,i) = 2; end models{2} = cub; % Pure quadratic model fprintf(fID_Progress, '\t%f\n', toc); cub = models{1}; count = size(cub,1); for i = 1:size(X,2)-1 for j = i+1:size(X,2) count = count + 1; cub(count,i) = 1; cub(count,j) = 1; end end models{3} = cub; % Quadratic interactions model for i = 1:size(X,2) count = count + 1; cub(count,i) = 2; end models{4} = cub; % Full quadratic model for i = 1:size(X,2)-1 for j = i+1:size(X,2) count = count + 1; cub(count,i) = 2; cub(count,j) = 1; count = count + 1; cub(count,i) = 1; cub(count,j) = 2; end end for i = 1:size(X,2)-2 for j = i+1:size(X,2)-1 for k = j+1:size(X,2) count = count + 1; cub(count,i) = 1; cub(count,j) = 1; cub(count,k) = 1; end end end models{5} = cub; % Quadratic with cubic interactions fprintf(fID_Progress, '\t%f\n', toc); for i = 1:size(X,2) count = count + 1; cub(count,i) = 3; end models{6} = cub; % Full cubic model for i = 1:size(Y,2) % Trying another way y = Y(:,i); x = X; % don't add column of ones for this rsquare = 0; for j = 1:length(models) if size(models{j},1) < size(y,1) stats = regstats(y,x,models{j}); % Calculate PRESS r = stats.r; hii = diag(stats.hatmat); PRESS = sum((r./(1-hii)).^2); % Calculate the R^2 of the prediction (Montgomery, p. 419) SS_total = stats.fstat.sse + stats.fstat.ssr; Rsquare = 1-PRESS/SS_total; if Rsquare >= rsquare rsquare = Rsquare; model = models{j}; beta = stats.beta; end end end disp(['Response: ' num2str(i) ' r2: ' num2str(rsquare)]) save(['objfun' num2str(i) '.mat'],'models','beta') end fprintf(fID_Progress, '\t%f\n', toc); fprintf(fID_Progress, 'Analytical_Model_Generation_End\n'); fclose('all');