predict

Класс: LinearMixedModel

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

Описание

пример

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 матрица q -by - или массив ячеек 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 - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

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

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

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

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

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

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

Пример: 'Conditional,false

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

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

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

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

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

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

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

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

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

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

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

расширить все

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

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

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

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

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

Примеры

расширить все

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

load('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

Figure contains an axes. The axes contains 6 objects of type line. These objects represent 70-data, 76-data, 82-data, 70-pred, 76-pred, 82-pred.

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

load('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(min(Horsepower),max(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-.');

Figure contains an axes. The axes contains 3 objects of type line.

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

DF(1)
ans = 389

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

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

Figure contains an axes. The axes contains 5 objects of type line.

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

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')

Figure contains an axes. The axes contains 7 objects of type line. These objects represent Predicted response, 95%, 95% Sim, 95% Sim-Satt.

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

DF
DF = 3.6001

Подробнее о

расширить все

См. также

| |

Для просмотра документации необходимо авторизоваться на сайте