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-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 имя аргумента и 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('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('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-.');

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

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

Больше о

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

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

| |