exponenta event banner

случайный

Класс: LinearMixedModel

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

Описание

пример

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

random моделирует новый вектор случайных эффектов и новые ошибки наблюдения. Таким образом, моделируемый ответ

ysim = ^ + Zb ^ +,

где β ^ - оцененные коэффициенты с фиксированными эффектами, b ^ - новые случайные эффекты, и,, (()) - новая ошибка наблюдения.

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

пример

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

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

пример

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

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

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

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

Линейная модель смешанных эффектов, заданная как 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.

random обрабатывает все уровни каждой переменной группировки как новые уровни. Он рисует независимый вектор случайных эффектов для каждого уровня каждой переменной группировки.

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

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

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

Смоделированные значения отклика, возвращаемые в виде вектора n-by-1, где n - количество наблюдений.

Примеры

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

Загрузите образцы данных.

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

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

rng(123,'twister') % For reproducibility
ysim = random(lme);
ysim(1:5)
ans = 5×1

  114.8785
  134.2018
  154.2818
  169.7554
   84.6089

Загрузите образцы данных.

load carsmall

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

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

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

rng(123,'twister') % For reproducibility
ysim = random(lme,tbl);

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

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

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

Следует отметить, что смоделированные значения случайного отклика для 82 года ниже, чем исходные данные для этого года. Это может быть связано с более низким имитируемым случайным эффектом для 82 года, чем предполагаемый случайный эффект в исходных данных.

Загрузите образцы данных.

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';'Silty'});
dsnew.Tomato = nominal({'Cherry';'Vine';'Plum'});
dsnew.Fertilizer = nominal([2;2;4]);

Создание случайных откликов в новых точках.

rng(123,'twister') % For reproducibility
ysim = random(lme,dsnew)
ysim = 3×1

   99.6006
  101.9911
  161.4026

Загрузите образцы данных.

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];
Gnew = nominal([73 77 82]);

Создание случайных откликов для данных в новых матрицах проектирования.

rng(123,'twister') % For reproducibility
ysim = random(lme,Xnew,Znew,Gnew)
ysim = 3×1

   15.7416
   10.6085
    6.8796

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

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};

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

rng(123,'twister') % For reproducibility
ysim = random(lme,Xnew,Znew,Gnew)
ysim = 3×1

   16.8280
   10.4375
    4.1027