random

Класс: LinearMixedModel

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

Описание

пример

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

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

ysim=Xβ^+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-by-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 object. The axes object 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 с. И значения в последних двух столбцах должны соответствовать 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];
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

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

| | |