2016-04-13 2 views
0

Я пытаюсь построить увеличение прочности по длине соединения. В приведенном ниже примере создаются случайные данные, подобные тому, что я ожидаю, для которых выполняется подгонка. Проблема в том, что я хотел бы определить уровень прогнозирования для каждой длины (каждое значение x), а не уровень предсказания всего набора данных. Как видно на рисунке, результаты намного меньше рассеяны при низких значениях x, чем выше.MATLAB: данные графика соответствуют прогнозу

Может ли кто-нибудь дать мне подсказку о том, как создать этот тип графика (где линии прогнозирования отходят от подгонки)?

%Generate random data 
xVec = 0:0.001:1; 
Distr = makedist('Normal','mu',10,'sigma',1); 
for i=1:length(xVec) 
    yVec(i) = sqrt(xVec(i))*random(Distr); 
end 

%Create fit and prediction interval 
FitVec = fit(xVec',yVec','poly4'); 
pRvecConf = predint(FitVec,xVec,0.95,'observation','off'); 

%Plot 
plot(FitVec,xVec,yVec) 
hold on 
plot(xVec,pRvecConf,'m--') 
legend('Data','Fitted curve','Confidence','Location','se') 
xlabel('Length') 
ylabel('Strength') 

Смотрите следующий пример участка: See example plot here

ответ

2

Поскольку yVec был сгенерирован путем взвешивания случайное распределение с SQRT (xVec), вы фактически изменили дисперсию случайной переменной для каждого значения х по xVec (квадрат sqrt (xVec)). Что вы можете сделать, так это пересчитать доверительный интервал, взвешивая исходные с помощью xVec. Вот некоторые коды, основанные на вашем,

%Generate random data 
xVec = 0:0.001:1; 
Distr = makedist('Normal','mu',10,'sigma',1); 
for i=1:length(xVec) 
    yVec(i) = sqrt(xVec(i))*random(Distr); 
end 

%Create fit and confidence interval 
FitVec = fit(xVec',yVec','poly4') 
pRvecConf = predint(FitVec,xVec,0.95,'observation','off'); 

%get the fitting values 
fitY=feval(FitVec,xVec); 
%multiply the confidence interval with sqrt(xVec(i)).^2 
ci=(fitY-pRvecConf(:,1)).*xVec'; 
%get the weighted confidence interval 
Conf_new=[fitY-ci,fitY+ci]; 

%Plot 
plot(FitVec,xVec,yVec) 
hold on 
plot(xVec,Conf_new,'m--') 
legend('Data','Fitted curve','Confidence','Location','se') 
xlabel('Length') 
ylabel('Strength') 

Результат должен выглядеть следующим образом: Figure of Modified Confidence Interval

Смежные вопросы