2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Как получить веса фактора из подгоночной модели в Matlab?
Сообщение18.08.2022, 12:16 


17/03/20
183
Уважаемые форумчане, добрый день! Возник конкретный вопрос, связанный с подгонкой экспериментальных данных. Например, я получаю следующую модель подгонки для экспериментальных данных:

Используется синтаксис Matlab M
[sf,gof] = fit([I, Ton],Ah,'poly22','Normalize', 'on', ...
    'Robust', 'Bisquare')
% Get data into fitted surface for create result graph
hPlot = plot(sf);
X = get(hPlot,'XData');
Y = get(hPlot,'YData');
Z = get(hPlot,'ZData');
set(gcf,'visible','off')
%Create figure for fitted polynomial model
createfigure1(X,Y,Z,I,Ton,Ah)
 


Код:
Linear model Poly22:
     sf(x,y) = p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2
       where x is normalized by mean 3 and std 1.732
       and where y is normalized by mean 40 and std 17.32
     Coefficients (with 95% confidence bounds):
       p00 =       73.63  (16.64, 130.6)
       p10 =       23.25  (-3.79, 50.28)
       p01 =       7.638  (-19.4, 34.67)
       p20 =      -19.04  (-59.59, 21.52)
       p11 =       3.776  (-24.9, 32.45)
       p02 =      -7.146  (-47.7, 33.41)
gof =
  struct with fields:
           sse: 1.7321e+03
       rsquare: 0.7800
           dfe: 3
    adjrsquare: 0.4133
          rmse: 24.0283


Мой вопрос заключается в следующем: каким образом можно получить оценку того, какой фактор (x или y) оказывает наибольшее влияние на окончательную функцию подбора? Другими словами, получить вес слагаемого x или y? В моем случае
Код:
x = I, Y = Ton, Z = Ah
. Может быть есть определенный метод в самой функции подгонки или вспомогательный? Однофакторный дисперсионный анализ показал, что наиболее сильное влияние оказывает величина x, но это не совсем верные данные, потому что число наблюдений по плану Тагучи равно 9.

Код функции createfigure1() и исходные данные прилагаются ниже:
код: [ скачать ] [ спрятать ]
Используется синтаксис Matlab M
function createfigure1(xdata1, ydata1, zdata1, XData2, YData2, ZData2)
%CREATEFIGURE1(xdata1, ydata1, zdata1, XData2, YData2, ZData2)
%  XDATA1:  surface xdata
%  YDATA1:  surface ydata
%  ZDATA1:  surface zdata
%  XDATA2:  line xdata
%  YDATA2:  line ydata
%  ZDATA2:  line zdata
 
 
% Create figure
figure1 = figure;
colormap(gray);
% Create axes
axes1 = axes('Parent',figure1);
hold(axes1,'on');
% Create surf
surf(xdata1,ydata1,zdata1,'DisplayName','Fit Result','PickableParts','none',...
    'Tag','curvefit.gui.FunctionSurface',...
    'Parent',axes1,...
    'EdgeLighting','flat',...
    'AlphaDataMapping','direct',...
    'SpecularExponent',5,...
    'AlignVertexCenters','on',...
    'LineWidth',1,...
    'FaceAlpha',0.75,...
    'FaceColor',[1 1 1],...
    'EdgeAlpha',0.5,...
    'EdgeColor','interp',...
    'AlphaData',0.5);
% Create line
line(XData2,YData2,ZData2,'DisplayName','Experimental','Parent',axes1,...
    'MarkerFaceColor',[1 0 0],...
    'MarkerEdgeColor',[1 1 1],...
    'MarkerSize',8,...
    'Marker','o',...
    'LineStyle','none',...
    'Color',[0.466666666666667 0.674509803921569 0.188235294117647]);
% Create zlabel
zlabel('$A_{l}$','FontSize',14,'Interpreter','latex','Rotation',0);
% Create ylabel
ylabel('$T_{p}$','FontSize',14,'FontName','Times New Roman',...
    'Interpreter','latex');
% Create xlabel
xlabel('I.','FontSize',14,'FontName','Times New Roman',...
    'Rotation',28);
% Create title
title('$ A_{l} = f(I, T_{p}) $','FontSize',14,'FontName','Times New Roman',...
    'Interpreter','latex');
view(axes1,[-57.561079176767 23.2221402047369]);
grid(axes1,'on');
axis(axes1,'padded');
hold(axes1,'off');
% Set the remaining axes properties
set(axes1,'Colormap',...
    [0.18995 0.07176 0.23217;0.19483 0.08339 0.26149;0.19956 0.09498 0.29024;0.20415 0.10652 0.31844;0.2086 0.11802 0.34607;0.21291 0.12947 0.37314;0.21708 0.14087 0.39964;0.22111 0.15223 0.42558;0.225 0.16354 0.45096;0.22875 0.17481 0.47578;0.23236 0.18603 0.50004;0.23582 0.1972 0.52373;0.23915 0.20833 0.54686;0.24234 0.21941 0.56942;0.24539 0.23044 0.59142;0.2483 0.24143 0.61286;0.25107 0.25237 0.63374;0.25369 0.26327 0.65406;0.25618 0.27412 0.67381;0.25853 0.28492 0.693;0.26074 0.29568 0.71162;0.2628 0.30639 0.72968;0.26473 0.31706 0.74718;0.26652 0.32768 0.76412;0.26816 0.33825 0.7805;0.26967 0.34878 0.79631;0.27103 0.35926 0.81156;0.27226 0.3697 0.82624;0.27334 0.38008 0.84037;0.27429 0.39043 0.85393;0.27509 0.40072 0.86692;0.27576 0.41097 0.87936;0.27628 0.42118 0.89123;0.27667 0.43134 0.90254;0.27691 0.44145 0.91328;0.27701 0.45152 0.92347;0.27698 0.46153 0.93309;0.2768 0.47151 0.94214;0.27648 0.48144 0.95064;0.27603 0.49132 0.95857;0.27543 0.50115 0.96594;0.27469 0.51094 0.97275;0.27381 0.52069 0.97899;0.27273 0.5304 0.98461;0.27106 0.54015 0.9893;0.26878 0.54995 0.99303;0.26592 0.55979 0.99583;0.26252 0.56967 0.99773;0.25862 0.57958 0.99876;0.25425 0.5895 0.99896;0.24946 0.59943 0.99835;0.24427 0.60937 0.99697;0.23874 0.61931 0.99485;0.23288 0.62923 0.99202;0.22676 0.63913 0.98851;0.22039 0.64901 0.98436;0.21382 0.65886 0.97959;0.20708 0.66866 0.97423;0.20021 0.67842 0.96833;0.19326 0.68812 0.9619;0.18625 0.69775 0.95498;0.17923 0.70732 0.94761;0.17223 0.7168 0.93981;0.16529 0.7262 0.93161;0.15844 0.73551 0.92305;0.15173 0.74472 0.91416;0.14519 0.75381 0.90496;0.13886 0.76279 0.8955;0.13278 0.77165 0.8858;0.12698 0.78037 0.8759;0.12151 0.78896 0.86581;0.11639 0.7974 0.85559;0.11167 0.80569 0.84525;0.10738 0.81381 0.83484;0.10357 0.82177 0.82437;0.10026 0.82955 0.81389;0.0975 0.83714 0.80342;0.09532 0.84455 0.79299;0.09377 0.85175 0.78264;0.09287 0.85875 0.7724;0.09267 0.86554 0.7623;0.0932 0.87211 0.75237;0.09451 0.87844 0.74265;0.09662 0.88454 0.73316;0.09958 0.8904 0.72393;0.10342 0.896 0.715;0.10815 0.90142 0.70599;0.11374 0.90673 0.69651;0.12014 0.91193 0.6866;0.12733 0.91701 0.67627;0.13526 0.92197 0.66556;0.14391 0.9268 0.65448;0.15323 0.93151 0.64308;0.16319 0.93609 0.63137;0.17377 0.94053 0.61938;0.18491 0.94484 0.60713;0.19659 0.94901 0.59466;0.20877 0.95304 0.58199;0.22142 0.95692 0.56914;0.23449 0.96065 0.55614;0.24797 0.96423 0.54303;0.2618 0.96765 0.52981;0.27597 0.97092 0.51653;0.29042 0.97403 0.50321;0.30513 0.97697 0.48987;0.32006 0.97974 0.47654;0.33517 0.98234 0.46325;0.35043 0.98477 0.45002;0.36581 0.98702 0.43688;0.38127 0.98909 0.42386;0.39678 0.99098 0.41098;0.41229 0.99268 0.39826;0.42778 0.99419 0.38575;0.44321 0.99551 0.37345;0.45854 0.99663 0.3614;0.47375 0.99755 0.34963;0.48879 0.99828 0.33816;0.50362 0.99879 0.32701;0.51822 0.9991 0.31622;0.53255 0.99919 0.30581;0.54658 0.99907 0.29581;0.56026 0.99873 0.28623;0.57357 0.99817 0.27712;0.58646 0.99739 0.26849;0.59891 0.99638 0.26038;0.61088 0.99514 0.2528;0.62233 0.99366 0.24579;0.63323 0.99195 0.23937;0.64362 0.98999 0.23356;0.65394 0.98775 0.22835;0.66428 0.98524 0.2237;0.67462 0.98246 0.2196;0.68494 0.97941 0.21602;0.69525 0.9761 0.21294;0.70553 0.97255 0.21032;0.71577 0.96875 0.20815;0.72596 0.9647 0.2064;0.7361 0.96043 0.20504;0.74617 0.95593 0.20406;0.75617 0.95121 0.20343;0.76608 0.94627 0.20311;0.77591 0.94113 0.2031;0.78563 0.93579 0.20336;0.79524 0.93025 0.20386;0.80473 0.92452 0.20459;0.8141 0.91861 0.20552;0.82333 0.91253 0.20663;0.83241 0.90627 0.20788;0.84133 0.89986 0.20926;0.8501 0.89328 0.21074;0.85868 0.88655 0.2123;0.86709 0.87968 0.21391;0.8753 0.87267 0.21555;0.88331 0.86553 0.21719;0.89112 0.85826 0.2188;0.8987 0.85087 0.22038;0.90605 0.84337 0.22188;0.91317 0.83576 0.22328;0.92004 0.82806 0.22456;0.92666 0.82025 0.2257;0.93301 0.81236 0.22667;0.93909 0.80439 0.22744;0.94489 0.79634 0.228;0.95039 0.78823 0.22831;0.9556 0.78005 0.22836;0.96049 0.77181 0.22811;0.96507 0.76352 0.22754;0.96931 0.75519 0.22663;0.97323 0.74682 0.22536;0.97679 0.73842 0.22369;0.98 0.73 0.22161;0.98289 0.7214 0.21918;0.98549 0.7125 0.2165;0.98781 0.7033 0.21358;0.98986 0.69382 0.21043;0.99163 0.68408 0.20706;0.99314 0.67408 0.20348;0.99438 0.66386 0.19971;0.99535 0.65341 0.19577;0.99607 0.64277 0.19165;0.99654 0.63193 0.18738;0.99675 0.62093 0.18297;0.99672 0.60977 0.17842;0.99644 0.59846 0.17376;0.99593 0.58703 0.16899;0.99517 0.57549 0.16412;0.99419 0.56386 0.15918;0.99297 0.55214 0.15417;0.99153 0.54036 0.1491;0.98987 0.52854 0.14398;0.98799 0.51667 0.13883;0.9859 0.50479 0.13367;0.9836 0.49291 0.12849;0.98108 0.48104 0.12332;0.97837 0.4692 0.11817;0.97545 0.4574 0.11305;0.97234 0.44565 0.10797;0.96904 0.43399 0.10294;0.96555 0.42241 0.09798;0.96187 0.41093 0.0931;0.95801 0.39958 0.08831;0.95398 0.38836 0.08362;0.94977 0.37729 0.07905;0.94538 0.36638 0.07461;0.94084 0.35566 0.07031;0.93612 0.34513 0.06616;0.93125 0.33482 0.06218;0.92623 0.32473 0.05837;0.92105 0.31489 0.05475;0.91572 0.3053 0.05134;0.91024 0.29599 0.04814;0.90463 0.28696 0.04516;0.89888 0.27824 0.04243;0.89298 0.26981 0.03993;0.88691 0.26152 0.03753;0.88066 0.25334 0.03521;0.87422 0.24526 0.03297;0.8676 0.2373 0.03082;0.86079 0.22945 0.02875;0.8538 0.2217 0.02677;0.84662 0.21407 0.02487;0.83926 0.20654 0.02305;0.83172 0.19912 0.02131;0.82399 0.19182 0.01966;0.81608 0.18462 0.01809;0.80799 0.17753 0.0166;0.79971 0.17055 0.0152;0.79125 0.16368 0.01387;0.7826 0.15693 0.01264;0.77377 0.15028 0.01148;0.76476 0.14374 0.01041;0.75556 0.13731 0.00942;0.74617 0.13098 0.00851;0.73661 0.12477 0.00769;0.72686 0.11867 0.00695;0.71692 0.11268 0.00629;0.7068 0.1068 0.00571;0.6965 0.10102 0.00522;0.68602 0.09536 0.00481;0.67535 0.0898 0.00449;0.66449 0.08436 0.00424;0.65345 0.07902 0.00408;0.64223 0.0738 0.00401;0.63082 0.06868 0.00401;0.61923 0.06367 0.0041;0.60746 0.05878 0.00427;0.5955 0.05399 0.00453;0.58336 0.04931 0.00486;0.57103 0.04474 0.00529;0.55852 0.04028 0.00579;0.54583 0.03593 0.00638;0.53295 0.03169 0.00705;0.51989 0.02756 0.0078;0.50664 0.02354 0.00863;0.49321 0.01963 0.00955;0.4796 0.01583 0.01055],...
    'GridAlpha',0.5,'GridColor',...
    [0.501960784313725 0.501960784313725 0.501960784313725],'MinorGridAlpha',...
    0.35,'MinorGridColor',...
    [0.501960784313725 0.501960784313725 0.501960784313725],...
    'TickLabelInterpreter','latex','XColor',...
    [0 0.447058823529412 0.741176470588235],'XMinorGrid','on','XMinorTick','on',...
    'YColor',[1 0.411764705882353 0.16078431372549],'YMinorGrid','on',...
    'YMinorTick','on','ZColor',[0 0.549019607843137 0.137254901960784],...
    'ZMinorGrid','on','ZMinorTick','on');
% Create colorbar
colorbar(axes1);
 


Экспериментальные данные и собственно сам скрипт для однофакторного анализа (матрица экспериментальных данных формируется из транспонированных векторов)

Код:
Ah = 15.0000 13.5000 16.7000 57.2000 57.8000 86.7000 42.8000 100.0000 64.0000
I =   1     1     1     3     3     3     5     5     5
Ton = 20    40    60    20    40    60    20    40    60
Al = 16.5000   12.0000   15.2000   69.0000   84.0000   93.7000   52.0000  100.0000   69.9000
freq = 12.5000   10.0000    8.3300   10.0000    8.3300   12.5000    8.3300   12.5000   10.0000
L  = 16.0000   25.8000   19.0000   51.6000   51.6000   90.0000   29.0000  100.0000   71.0000


Используется синтаксис Matlab M
ExpData = [I' Ton' freq' Ah' Al' L']

q = 0.1; % уровень значимости
fprintf('Выбран уровень значимости q=%4.2f\n',q);
p = anova1(ExpData(:,4),ExpData(:,1)); % 1-факторный дисперсионный анализ
set(get(gcf,'CurrentAxes'),...
  'FontName','Times New Roman Cyr','FontSize',10)
title('\bfОднофакторный дисперсионный анализ')
if p >= q
  disp('Фактор A влияет незначимо.')
else
  disp('Фактор A влияет значимо.')
end
 


Т.е. цель по сути состоит в том, чтобы определить какой из факторов (I,freq,Ton) наиболее сильно влияет на изменение значений Ah,Al,L...

 Профиль  
                  
 
 Re: Как получить веса фактора из подгоночной модели в Matlab?
Сообщение30.08.2022, 11:12 


11/08/18
363
наивный способ - повыкидывать поочередно каждый из факторов, посчитать невязку и сравнить где невязка наиболее сильно скакнула, не наивный - посмотреть в сторону compressive sensing - там, возможно какой-то байесовский метод лучше это может сказать (но не факт).

 Профиль  
                  
 
 Re: Как получить веса фактора из подгоночной модели в Matlab?
Сообщение03.09.2022, 12:21 
Аватара пользователя


26/05/12
1534
приходит весна?
Alm99, ваш вопрос ужасно плохо поставлен. Вам надо было начать с того, какую модель (в виде формулы, если такое возможно) вы подгоняете и под какие данные, а так же каким методом. Выковыривать эти ключевые моменты вашего вопроса из предъявленного кода (который, как мне кажется, ещё и не полный) — это, во-первых, неблагодарная и бесполезная работа, а во-вторых, проявление вашего неуважения к потенциальным помощникам. Я, например, хотел бы помочь коллеге по обработке данных, но совершенно не понимаю, что вы берёте и что со взятым делаете.

 Профиль  
                  
 
 Re: Как получить веса фактора из подгоночной модели в Matlab?
Сообщение03.09.2022, 12:59 


17/03/20
183
B@R5uk

Я искренне прошу прощения, на самом деле у меня не было никаких предпосылок для проявления неуважения специально.

Если говорить непосредственно о самой задаче, то мне необходимо получить следующие зависимости:

$A_{h} = f(I,T_{on})$

$A_{l} = f(I,T_{on})$

$A_{h} = f(I,f)$

$A_{l} = f(I,f)$


В качестве плана экперимента был выбран план Тагучи (9 наблюдений). И по сути, стоит задача понять, а какой из факторов $T_{on}, f$ оказывает наибольшее влияние. Положим, что зависимость квадратичная, потому что при линейной зависимости коэффициент детерминации будет меньше 0.8.

Можно ли, вообще не рассматривать, например фактор $T_{on}$, или $f$? Желательно, если функциональная зависимость будет иметь вид:
$ ax^{2} + by +cx + d$
.

Поэтому я решил уточнить, возможно ли встроенными средствами MATLAB извлечь вес каждого слагаемого модели, чтобы делать выводы о том, стоит ли его откинуть или нет? И в принципе, думаю совет от ув.ilghiz касательно compressive sensing будет полезен в данном случае, ну или тогда просто считать невязку и смотреть на ее скачки.

 Профиль  
                  
 
 Re: Как получить веса фактора из подгоночной модели в Matlab?
Сообщение25.09.2022, 14:35 


11/08/18
363
Alm99 в сообщении #1564030 писал(а):
Поэтому я решил уточнить, возможно ли встроенными средствами MATLAB извлечь вес каждого слагаемого модели, чтобы делать выводы о том, стоит ли его откинуть или нет? И в принципе, думаю совет от ув.ilghiz касательно compressive sensing будет полезен в данном случае, ну или тогда просто считать невязку и смотреть на ее скачки.

Еще момент, я не уверен, что солверы compressive sensing есть в матлабе, (просто не знаю, так как редко матлиб пользую и не все в нем знаю), но еще один подход, который тоже должен хорошо работать.

Вначале стройте решение по всем векторам, и смотрите какой вектор максимально легко можно аппроксимировать другими, его и надо выкинуть. Далее так поступаете несколько раз, пока невязка аппроксимации не скакнет и откатывайтесь на предыдущее решение. Понятно, что это - не панацея, и по хорошему, там просится честный решатель из компрессив сенсинга, но этот урезанный вариант, ИМХО, легко написать на матлабе и быстро проверить, и, мой опыт показывает, что его обычно хватает.

Как проверить какой вектор можно через другие аппроксимировать - тут тоже есть небольшой произвол, так как нормы могут быть отличными, и, ИМХО, просится перед такой аппроксимацией нормировать этот пробный вектор.

ЗЫ: если не понятно объяснил - говорите, попытаюсь более детально и не на пальцах сформулировать.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group