exponenta event banner

предсказать

Класс: 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 или массив ячеек матриц 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 s. И значения в последних двух столбцах должны соответствовать Acceleration и Horsepowerсоответственно. Первый столбец Znew должен быть столбцом 1 s, а второй столбец должен содержать то же самое 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

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

[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

Подробнее

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

См. также

| |