random

Класс: NonLinearModel

Симулируйте ответы для нелинейной модели регрессии

Синтаксис

ysim = random(mdl)
ysim = random(mdl,Xnew)
ysim = random(mdl,Xnew,'Weights',W)

Описание

ysim = random(mdl) симулирует ответы из подходящей нелинейной модели mdl в точках первоначального проекта.

ysim = random(mdl,Xnew) симулирует ответы из подходящей нелинейной модели mdl к данным в Xnew, добавление случайного шума.

ysim = random(mdl,Xnew,'Weights',W) симулирует ответы с помощью весов наблюдения, W.

Входные параметры

mdl

Нелинейная модель регрессии, созданная fitnlm.

Xnew

Точки, в который mdl предсказывает ответы.

  • Если Xnew таблица или массив набора данных, это должно содержать имена предиктора в mdl.

  • Если Xnew числовая матрица, она должна иметь то же количество переменных (столбцы), как использовался, чтобы создать mdl. Кроме того, все переменные используются в создании mdl mustBeNumeric.

W

Вектор действительных, положительных весов значения или указателя на функцию.

  • Если вы задаете вектор, то он должен иметь то же число элементов как количество наблюдений (или строки) в Xnew.

  • Если вы задаете указатель на функцию, функция должна принять вектор предсказанных значений ответа, как введено и возвращает вектор действительных положительных весов, как выведено.

Учитывая веса, W, random оценивает ошибочное отклонение при наблюдении i MSE*(1/W(i)), где MSE является среднеквадратической ошибкой.

Значение по умолчанию: Никакие веса

Выходные аргументы

ysim

Вектор предсказанных средних значений в Xnew, встревоженный случайным шумом. Шум независим, нормально распределен со средним нулем и отклонением, равным предполагаемому ошибочному отклонению модели.

Примеры

развернуть все

Создайте нелинейную модель пробега автомобиля как функция веса и симулируйте ответ.

Создайте экспоненциальную модель пробега автомобиля как функция веса от carsmall данные. Масштабируйте вес фактором 1 000, таким образом, все переменные примерно равны в размере.

load carsmall
X = Weight;
y = MPG;
modelfun = 'y ~ b1 + b2*exp(-b3*x/1000)';
beta0 = [1 1 1];
mdl = fitnlm(X,y,modelfun,beta0);

Создайте симулированные ответы на данные.

Xnew = X;
ysim = random(mdl,Xnew);

Постройте исходные ответы и симулированные ответы, чтобы видеть, как они отличаются.

plot(X,y,'o',X,ysim,'x')
legend('Data','Simulated')

Альтернативы

Для прогнозов без добавленного шума используйте predict.