предсказать

Класс: LinearMixedModel

Предскажите ответ линейной модели смешанных эффектов

Синтаксис

ypred = predict(lme)
ypred = predict(lme,tblnew)
ypred = predict(lme,Xnew,Znew)
ypred = predict(lme,Xnew,Znew,Gnew)
ypred = predict(___,Name,Value)
[ypred,ypredCI] = predict(___)
[ypred,ypredCI,DF] = predict(___)

Описание

пример

ypred = predict(lme) возвращается вектор условного выражения предсказал ответы, ypred в исходных предикторах раньше соответствовал линейной модели lme смешанных эффектов.

пример

ypred = predict(lme,tblnew) возвращается вектор условного выражения предсказал ответы ypred из подходящей линейной модели lme смешанных эффектов в значениях в новой таблице или массиве набора данных tblnew. Используйте таблицу или массив набора данных для predict, если вы используете таблицу или массив набора данных для подбора кривой модели lme.

Если конкретная группирующая переменная в tblnew имеет уровни, которые не находятся в исходных данных, то случайные эффекты для той группирующей переменной не способствуют прогнозу 'Conditional' при наблюдениях, где группирующая переменная имеет новые уровни.

ypred = predict(lme,Xnew,Znew) возвращается вектор условного выражения предсказал ответы, ypred из подходящей линейной модели lme смешанных эффектов в значениях в зафиксированном новом - и случайные эффекты разрабатывает матрицы, Xnew и Znew, соответственно. Znew может также быть массивом ячеек матриц. В этом случае группирующей переменной G является ones(n,1), где n является количеством наблюдений, используемых в подгонке.

Используйте матричный формат для predict при использовании матриц проекта для подбора кривой модели lme.

пример

ypred = predict(lme,Xnew,Znew,Gnew) возвращается вектор условного выражения предсказал ответы, ypred из подходящей линейной модели lme смешанных эффектов в значениях в зафиксированном новом - и случайные эффекты разрабатывает матрицы, Xnew и Znew, соответственно, и группирующую переменную Gnew.

Znew и Gnew могут также быть массивами ячеек матриц и группирующих переменных, соответственно.

пример

ypred = predict(___,Name,Value) возвращает вектор предсказанных ответов ypred из подходящей линейной модели lme смешанных эффектов с дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value.

Например, можно задать доверительный уровень, одновременные доверительные границы или вклады только от фиксированных эффектов.

пример

[ypred,ypredCI] = predict(___) также возвращает доверительные интервалы ypredCI для прогнозов ypred для любого из входных параметров в предыдущих синтаксисах.

пример

[ypred,ypredCI,DF] = predict(___) также возвращает степени свободы DF, используемый в вычислении доверительных интервалов для любого из входных параметров в предыдущих синтаксисах.

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

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

Линейная модель смешанных эффектов, заданная как объект LinearMixedModel, созданный с помощью fitlme или fitlmematrix.

Новые входные данные, который включает переменную отклика, переменные прогноза и группирующие переменные, заданные как массив набора данных или таблица. Переменные прогноза могут быть непрерывными или группирующие переменные. tblnew должен иметь те же переменные как в исходной таблице, или массив набора данных раньше соответствовал линейной модели lme смешанных эффектов.

Новые фиксированные эффекты разрабатывают матрицу, заданную как n-by-p матрица, где n является количеством наблюдений, и p является количеством фиксированных переменных прогноза. Каждая строка X соответствует одному наблюдению, и каждый столбец X соответствует одной переменной.

Типы данных: single | double

Новый проект случайных эффектов, заданный как n-by-q матрица или массив ячеек R, разрабатывает матрицы Z{r}, где r = 1, 2..., R. Если Znew является массивом ячеек, то каждым Z{r} является n-by-q (r) матрица, где n является количеством наблюдений, и q (r) является количеством случайных переменных прогноза.

Типы данных: single | double | cell

Новая группирующая переменная или переменные, заданные как вектор или массив ячеек, длины R, группирующих переменных с теми же уровнями или группами как исходные группирующие переменные раньше, соответствовали линейной модели lme смешанных эффектов.

Типы данных: single | double | categorical | logical | char | string | cell

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Уровень значения, заданный как пара, разделенная запятой, состоящая из 'Alpha' и скалярного значения в области значений от 0 до 1. Для значения α, доверительный уровень равняется 100* (1–α) %.

Например, для 99% доверительных интервалов, можно задать доверительный уровень можно следующим образом.

Пример: 'Alpha',0.01

Типы данных: single | double

Индикатор для условных прогнозов, заданных как пара, разделенная запятой, состоящая из 'Conditional' и одно из следующих.

trueВклады и от зафиксированных эффектов и от случайных эффектов (условное выражение)
falseВклад только от фиксированных (крайних) эффектов

Пример: 'Conditional,false

Метод для вычисления аппроксимированных степеней свободы, чтобы использовать в вычислении доверительного интервала, заданном как пара, разделенная запятой, состоящая из 'DFMethod' и одно из следующих.

'residual'Значение по умолчанию. Степени свободы приняты, чтобы быть постоянными и равными np, где n является количеством наблюдений, и p является количеством фиксированных эффектов.
'satterthwaite'Приближение Satterthwaite.
'none'Все степени свободы установлены в бесконечность.

Например, можно задать приближение Satterthwaite можно следующим образом.

Пример: 'DFMethod','satterthwaite'

Тип доверительных границ, заданных как пара, разделенная запятой, состоящая из 'Simultaneous' и одно из следующих.

falseЗначение по умолчанию. Неодновременные границы.
trueОдновременные границы.

Пример: 'Simultaneous',true

Тип прогноза, заданного как пара, разделенная запятой, состоящая из 'Prediction' и одно из следующих.

'curve'Значение по умолчанию. Доверительные границы для прогнозов на основе подходящей функции.
'observation'Изменчивость из-за ошибки наблюдения для новых наблюдений также включена в вычисления доверительной границы, и это приводит к более широким границам.

Пример: 'Prediction','observation'

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

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

Предсказанные ответы, возвращенные как вектор. ypred может содержать условные или крайние ответы, в зависимости от выбора значения аргумента пары "имя-значение" 'Conditional'. Условные прогнозы включают вклады и от зафиксированных и от случайных эффектов.

Мудрые точкой доверительные интервалы для ожидаемых значений, возвращенных как матрица 2D столбца. Первый столбец yCI содержит нижние границы, и второй столбец содержит верхнюю границу. По умолчанию yCI содержит 95% доверительных интервалов для прогнозов. Можно изменить доверительный уровень с помощью аргумента пары "имя-значение" Alpha, сделать их одновременным использованием аргумента пары "имя-значение" Simultaneous, и также сделать их для нового наблюдения, а не для кривой с помощью аргумента пары "имя-значение" Prediction.

Степени свободы, используемые в вычислении доверительных интервалов, возвращенных как вектор или скалярное значение.

  • Если аргументом пары "имя-значение" 'Simultaneous' является false, то DF является вектором.

  • Если аргументом пары "имя-значение" 'Simultaneous' является true, то DF является скалярным значением.

Примеры

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

Загрузите выборочные данные.

load(fullfile(matlabroot,'examples','stats','fertilizer.mat'));

Массив набора данных включает данные из эксперимента графика разделения, где почва разделена на три блока на основе типа грунта: песчаный, илистый, и глинистый. Каждый блок разделен на пять графиков, где пять различных типов томатных объектов (вишня, семейная реликвия, виноград, виноградная лоза и слива) случайным образом присвоены этим графикам. Томатные объекты в графиках затем разделены на подграфики, где каждый подграфик обработан одним из четырех удобрений. Это - моделируемые данные.

Храните данные в массиве набора данных под названием ds, практически, и задайте Tomato, Soil и Fertilizer как категориальные переменные.

ds = fertilizer;
ds.Tomato = nominal(ds.Tomato);
ds.Soil = nominal(ds.Soil);
ds.Fertilizer = nominal(ds.Fertilizer);

Соответствуйте линейной модели смешанных эффектов, где Fertilizer и Tomato являются переменными фиксированных эффектов, и средний урожай отличается блоком (тип грунта) и графики в блоках (томатные типы в типах грунта) независимо.

lme = fitlme(ds,'Yield ~ Fertilizer * Tomato + (1|Soil) + (1|Soil:Tomato)');

Предскажите значения ответа в значениях первоначального проекта. Отобразите первые пять прогнозов с наблюдаемыми значениями ответа.

yhat = predict(lme);
[yhat(1:5) ds.Yield(1:5)]
ans = 5×2

  115.4788  104.0000
  135.1455  136.0000
  152.8121  158.0000
  160.4788  174.0000
   58.0839   57.0000

Загрузите выборочные данные.

load carsmall

Соответствуйте линейной модели смешанных эффектов с фиксированным эффектом для Weight и случайным прерыванием, сгруппированным Model_Year. Во-первых, храните данные в таблице.

tbl = table(MPG,Weight,Model_Year);
lme = fitlme(tbl,'MPG ~ Weight + (1|Model_Year)');

Создайте предсказанные ответы на данные.

yhat = predict(lme,tbl);

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

figure()
gscatter(Weight,MPG,Model_Year)
hold on
gscatter(Weight,yhat,Model_Year,[],'o+x')
legend('70-data','76-data','82-data','70-pred','76-pred','82-pred')
hold off

Загрузите выборочные данные.

load(fullfile(matlabroot,'examples','stats','fertilizer.mat'));

Массив набора данных включает данные из эксперимента графика разделения, где почва разделена на три блока на основе типа грунта: песчаный, илистый, и глинистый. Каждый блок разделен на пять графиков, где пять различных типов томатных объектов (вишня, семейная реликвия, виноград, виноградная лоза и слива) случайным образом присвоены этим графикам. Томатные объекты в графиках затем разделены на подграфики, где каждый подграфик обработан одним из четырех удобрений. Это - моделируемые данные.

Храните данные в массиве набора данных под названием ds, практически, и задайте Tomato, Soil и Fertilizer как категориальные переменные.

ds = fertilizer;
ds.Tomato = nominal(ds.Tomato);
ds.Soil = nominal(ds.Soil);
ds.Fertilizer = nominal(ds.Fertilizer);

Соответствуйте линейной модели смешанных эффектов, где Fertilizer и Tomato являются переменными фиксированных эффектов, и средний урожай отличается блоком (тип грунта) и графики в блоках (томатные типы в типах грунта) независимо.

lme = fitlme(ds,'Yield ~ Fertilizer * Tomato + (1|Soil) + (1|Soil:Tomato)');

Создайте новый массив набора данных с расчетными значениями. Новый массив набора данных должен иметь те же переменные как исходный массив набора данных, который вы используете для подбора кривой модели lme.

dsnew = dataset();
dsnew.Soil = nominal({'Sandy';'Silty'});
dsnew.Tomato = nominal({'Cherry';'Vine'});
dsnew. Fertilizer = nominal([2;2]);

Предскажите условные и крайние ответы в точках первоначального проекта.

yhatC = predict(lme,dsnew);
yhatM = predict(lme,dsnew,'Conditional',false);
[yhatC yhatM]
ans = 2×2

   92.7505  111.6667
   87.5891   82.6667

Загрузите выборочные данные.

load carbig

Соответствуйте линейной модели смешанных эффектов для миль на галлон (MPG), с фиксированными эффектами для ускорения, лошадиной силы и цилиндров, и потенциально коррелировал случайные эффекты для прерывания и ускорения, сгруппированного модельным годом.

Во-первых, подготовьте матрицы проекта к подбору кривой линейной модели смешанных эффектов.

X = [ones(406,1) Acceleration Horsepower];
Z = [ones(406,1) Acceleration];
Model_Year = nominal(Model_Year);
G = Model_Year;

Теперь, соответствуйте модели с помощью fitlmematrix с заданными матрицами проекта и группирующими переменными.

lme = fitlmematrix(X,MPG,Z,G,'FixedEffectPredictors',....
{'Intercept','Acceleration','Horsepower'},'RandomEffectPredictors',...
{{'Intercept','Acceleration'}},'RandomEffectGroups',{'Model_Year'});

Создайте матрицы проекта, которые содержат данные, в которых можно предсказать значения ответа. Xnew должен иметь три столбца как в X. Первый столбец должен быть столбцом 1 с. И значения в последних двух столбцах должны соответствовать Acceleration и Horsepower, соответственно. Первый столбец Znew должен быть столбцом 1 с, и второй столбец должен содержать те же значения Acceleration как в Xnew. Исходная группирующая переменная в G является модельным годом. Так, Gnew должен содержать значения в течение модельного года. Обратите внимание на то, что Gnew должен содержать номинальную стоимость.

Xnew = [1,13.5,185; 1,17,205; 1,21.2,193];
Znew = [1,13.5; 1,17; 1,21.2]; % alternatively Znew = Xnew(:,1:2);
Gnew = nominal([73 77 82]);

Предскажите ответы для данных в новых матрицах проекта.

yhat = predict(lme,Xnew,Znew,Gnew)
yhat = 3×1

    8.7063
    5.4423
   12.5384

Теперь, повторите то же самое для линейной модели смешанных эффектов с некоррелироваными условиями случайных эффектов для прерывания и ускорения. Во-первых, измените исходный случайный проект эффектов и случайные группирующие переменные эффектов. Затем переоборудуйте модель.

Z = {ones(406,1),Acceleration};
G = {Model_Year,Model_Year};

lme = fitlmematrix(X,MPG,Z,G,'FixedEffectPredictors',....
{'Intercept','Acceleration','Horsepower'},'RandomEffectPredictors',...
{{'Intercept'},{'Acceleration'}},'RandomEffectGroups',{'Model_Year','Model_Year'});

Теперь, воссоздайте новый случайный проект эффектов, Znew, и проект группирующей переменной, Gnew, с помощью то, чтобы предсказать значения ответа.

Znew = {[1;1;1],[13.5;17;21.2]};
MY = nominal([73 77 82]);
Gnew = {MY,MY};

Предскажите ответы с помощью новых матриц проекта.

yhat = predict(lme,Xnew,Znew,Gnew)
yhat = 3×1

    8.6365
    5.9199
   12.1247

Загрузите выборочные данные.

load carbig

Соответствуйте линейной модели смешанных эффектов для миль на галлон (MPG), с фиксированными эффектами для ускорения, лошадиной силы и цилиндров, и потенциально коррелировал случайные эффекты для прерывания и ускорения, сгруппированного модельным годом. Во-первых, сохраните переменные в таблице.

tbl = table(MPG,Acceleration,Horsepower,Model_Year);

Теперь, соответствуйте модели с помощью fitlme с заданными матрицами проекта и группирующими переменными.

lme = fitlme(tbl,'MPG ~ Acceleration + Horsepower + (Acceleration|Model_Year)');

Создайте новые данные и сохраните их в новой таблице.

tblnew = table();
tblnew.Acceleration = linspace(8,25)';
tblnew.Horsepower = linspace(nanmin(Horsepower),nanmax(Horsepower))';
tblnew.Model_Year = repmat(70,100,1);

linspace создает 100 одинаково дистанцированной стоимости между ниже и верхние входные пределы. Model_Year фиксируется в 70. Можно повторить это в течение любого модельного года.

Вычислите и постройте ожидаемые значения и 95% (неодновременных) пределов достоверности.

[ypred,yCI,DF] = predict(lme,tblnew);
figure(); 
h1 = line(tblnew.Acceleration,ypred);
hold on;
h2 = plot(tblnew.Acceleration,yCI,'g-.');

Отобразите степени свободы.

DF(1)
ans = 389

Вычислите и постройте одновременные доверительные границы.

[ypred,yCI,DF] = predict(lme,tblnew,'Simultaneous',true);
h3 = plot(tblnew.Acceleration,yCI,'r--');

Отобразите степени свободы.

DF
DF = 389

Вычислите одновременные доверительные границы с помощью метода Satterthwaite, чтобы вычислить степени свободы.

[ypred,yCI,DF] = predict(lme,tblnew,'Simultaneous',true,'DFMethod','satterthwaite');
h4 = plot(tblnew.Acceleration,yCI,'k:');
hold off
xlabel('Acceleration')
ylabel('Response')
ylim([-50,60])
xlim([8,25])
legend([h1,h2(1),h3(1),h4(1)],'Predicted response','95%','95% Sim',...
'95% Sim-Satt','Location','Best')

Отобразите степени свободы.

DF
DF = 3.6001

Больше о

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

Смотрите также

| |