exponenta event banner

randomEffects

Класс: LinearMixedModel

Оценки случайных эффектов и соответствующая статистика

Описание

пример

B = randomEffects(lme) возвращает оценки лучших линейных несмещенных предикторов (BLUP) случайных эффектов в линейной модели смешанных эффектов lme.

пример

[B,Bnames] = randomEffects(lme) также возвращает имена коэффициентов в Bnames. Каждое имя соответствует коэффициенту в B.

пример

[B,Bnames,stats] = randomEffects(lme) также возвращает оцененные значения BLUP случайных эффектов в линейной модели смешанных эффектов lme и соответствующие статистические данные.

пример

[B,Bnames,stats] = randomEffects(lme,Name,Value) также возвращает BLUP случайных эффектов в линейной модели смешанных эффектов lme и смежные статистические данные с дополнительными опциями, указанными одним или несколькими Name,Value аргументы пары.

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

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

Линейная модель смешанных эффектов, заданная как LinearMixedModel объект, построенный с помощью fitlme или fitlmematrix.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

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

Например, для 99% доверительных интервалов можно указать доверительный уровень следующим образом.

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

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

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

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

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

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

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

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

Оцененные лучшие линейные несмещенные предикторы случайных эффектов линейной модели смешанных эффектов lme, возвращается в виде вектора столбца.

Предположим lme имеет R группирующих переменных g1, g2,..., gR, с уровнями m1, m2,..., mR соответственно. Также предположим, что q1, q2,..., qR - длины векторов случайных эффектов, которые связаны с g1, g2,..., gR соответственно. Затем, B - вектор столбца длиной q1 * m1 + q2 * m2 +... + qR * mR.

randomEffects создает B путем объединения лучших линейных несмещенных предикторов векторов случайных эффектов, соответствующих каждому уровню каждой переменной группировки, как [g1level1; g1level2; ...; g1levelm1; g2level1; g2level2; ...; g2levelm2; ...; gRlevel1; gRlevel2; ...; gRlevelmR]'.

Имена коэффициентов случайных эффектов в B, возвращено в виде таблицы.

Оценки случайных эффектов BLUP и связанной статистики, возвращаемые в виде массива наборов данных, который имеет одну строку для каждого из фиксированных эффектов и один столбец для каждой из следующих статистических данных.

GroupГруппировка переменных, связанных со случайным эффектом
LevelУровень в пределах переменной группировки, соответствующей случайному эффекту
NameИмя коэффициента случайного эффекта
EstimateЛучший линейный несмещенный предиктор (BLUP) случайного эффекта
SEPredСтандартная ошибка оценки (BLUP минус случайный эффект)
tStatt-статистика для теста, что случайный эффект равен нулю
DFРасчетные степени свободы для t-статистики
pValuep-значение для t-статистики
LowerНижняя граница 95% доверительного интервала для случайного эффекта
UpperВерхний предел 95% доверительного интервала для случайного эффекта

Примеры

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

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

load carbig

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

tbl = table(Acceleration,Horsepower,Model_Year,MPG);

Подгоните модель.

lme = fitlme(tbl, 'MPG ~ Acceleration + Horsepower + (Acceleration|Model_Year)');

Вычислите BLUP коэффициентов случайных эффектов и отобразите имена соответствующих случайных эффектов.

[B,Bnames] = randomEffects(lme)
B = 26×1

    3.1270
   -0.2426
   -1.6532
   -0.0086
    1.2075
   -0.2179
    4.4107
   -0.4887
   -1.3103
   -0.0208
      ⋮

Bnames=26×3 table
        Group         Level           Name      
    ______________    ______    ________________

    {'Model_Year'}    {'70'}    {'(Intercept)' }
    {'Model_Year'}    {'70'}    {'Acceleration'}
    {'Model_Year'}    {'71'}    {'(Intercept)' }
    {'Model_Year'}    {'71'}    {'Acceleration'}
    {'Model_Year'}    {'72'}    {'(Intercept)' }
    {'Model_Year'}    {'72'}    {'Acceleration'}
    {'Model_Year'}    {'73'}    {'(Intercept)' }
    {'Model_Year'}    {'73'}    {'Acceleration'}
    {'Model_Year'}    {'74'}    {'(Intercept)' }
    {'Model_Year'}    {'74'}    {'Acceleration'}
    {'Model_Year'}    {'75'}    {'(Intercept)' }
    {'Model_Year'}    {'75'}    {'Acceleration'}
    {'Model_Year'}    {'76'}    {'(Intercept)' }
    {'Model_Year'}    {'76'}    {'Acceleration'}
    {'Model_Year'}    {'77'}    {'(Intercept)' }
    {'Model_Year'}    {'77'}    {'Acceleration'}
      ⋮

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

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

[~,~,stats] = covarianceParameters(lme)
stats=2×1 cell array
    {3x7 classreg.regr.lmeutils.titleddataset}
    {1x5 classreg.regr.lmeutils.titleddataset}

stats{1}
ans = 
    Covariance Type: FullCholesky

    Group         Name1                   Name2                   Type        
    Model_Year    {'(Intercept)' }        {'(Intercept)' }        {'std' }    
    Model_Year    {'Acceleration'}        {'(Intercept)' }        {'corr'}    
    Model_Year    {'Acceleration'}        {'Acceleration'}        {'std' }    


    Estimate    Lower       Upper   
      3.3475      1.2862      8.7119
    -0.87971    -0.98501    -0.29675
     0.33789      0.1825     0.62558

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

plot(B(1:2:end),B(2:2:end),'r*')

Figure contains an axes. The axes contains an object of type line.

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

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

Вычисление BLUP и связанной статистики для случайных эффектов.

[~,~,stats] = randomEffects(lme)
stats = 
    Random effect coefficients: DFMethod = 'Residual', Alpha = 0.05

    Group                  Level                     Name               
    {'Soil'       }        {'Loamy'         }        {'(Intercept)'}    
    {'Soil'       }        {'Sandy'         }        {'(Intercept)'}    
    {'Soil'       }        {'Silty'         }        {'(Intercept)'}    
    {'Soil:Tomato'}        {'Loamy Cherry'  }        {'(Intercept)'}    
    {'Soil:Tomato'}        {'Loamy Grape'   }        {'(Intercept)'}    
    {'Soil:Tomato'}        {'Loamy Heirloom'}        {'(Intercept)'}    
    {'Soil:Tomato'}        {'Loamy Plum'    }        {'(Intercept)'}    
    {'Soil:Tomato'}        {'Loamy Vine'    }        {'(Intercept)'}    
    {'Soil:Tomato'}        {'Sandy Cherry'  }        {'(Intercept)'}    
    {'Soil:Tomato'}        {'Sandy Grape'   }        {'(Intercept)'}    
    {'Soil:Tomato'}        {'Sandy Heirloom'}        {'(Intercept)'}    
    {'Soil:Tomato'}        {'Sandy Plum'    }        {'(Intercept)'}    
    {'Soil:Tomato'}        {'Sandy Vine'    }        {'(Intercept)'}    
    {'Soil:Tomato'}        {'Silty Cherry'  }        {'(Intercept)'}    
    {'Soil:Tomato'}        {'Silty Grape'   }        {'(Intercept)'}    
    {'Soil:Tomato'}        {'Silty Heirloom'}        {'(Intercept)'}    
    {'Soil:Tomato'}        {'Silty Plum'    }        {'(Intercept)'}    
    {'Soil:Tomato'}        {'Silty Vine'    }        {'(Intercept)'}    


    Estimate    SEPred    tStat       DF    pValue      Lower      Upper  
     1.0061     2.3374     0.43044    40     0.66918     -3.718     5.7303
    -1.5236     2.3374    -0.65181    40     0.51825    -6.2477     3.2006
    0.51744     2.3374     0.22137    40     0.82593    -4.2067     5.2416
      12.46     7.1765      1.7362    40    0.090224    -2.0443     26.964
    -2.6429     7.1765    -0.36827    40     0.71461    -17.147     11.861
     16.681     7.1765      2.3244    40    0.025269     2.1766     31.185
    -5.0172     7.1765    -0.69911    40     0.48853    -19.522     9.4872
    -4.6874     7.1765    -0.65316    40     0.51739    -19.192     9.8169
    -17.393     7.1765     -2.4235    40    0.019987    -31.897    -2.8882
    -7.3679     7.1765     -1.0267    40     0.31075    -21.872     7.1364
     -8.621     7.1765     -1.2013    40     0.23671    -23.125     5.8833
      7.669     7.1765      1.0686    40     0.29165    -6.8353     22.173
    0.28246     7.1765    0.039359    40      0.9688    -14.222     14.787
     4.9326     7.1765     0.68732    40     0.49585    -9.5718     19.437
     10.011     7.1765      1.3949    40     0.17073    -4.4935     24.515
    -8.0599     7.1765     -1.1231    40      0.2681    -22.564     6.4444
    -2.6519     7.1765    -0.36952    40     0.71369    -17.156     11.852
      4.405     7.1765      0.6138    40     0.54282    -10.099     18.909

Первые три строки содержат оценки случайных эффектов и статистику для трех уровней, Loamy, Sandy, и Silty переменной группировки Soil. Соответствующие значения p 0,66918, 0,51825 и 0,82593 указывают на то, что эти случайные эффекты существенно не отличаются от 0. Следующие 15 строк включают оценки случайных эффектов для перехвата, сгруппированные по переменной Tomato, вложенной в почву, т.е. взаимодействие Tomato и Soil.

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

load shift

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

lme = fitlme(shift,'QCDev ~ Shift + (1|Operator)');

Вычислите 99% доверительные интервалы для случайных эффектов, используя опцию остаточных значений для вычисления степеней свободы. Это метод по умолчанию.

[~,~,stats] = randomEffects(lme,'Alpha',0.01)
stats = 
    Random effect coefficients: DFMethod = 'Residual', Alpha = 0.01

    Group               Level        Name                   Estimate    SEPred 
    {'Operator'}        {'1'}        {'(Intercept)'}        0.57753     0.90378
    {'Operator'}        {'2'}        {'(Intercept)'}         1.1757     0.90378
    {'Operator'}        {'3'}        {'(Intercept)'}        -2.1715     0.90378
    {'Operator'}        {'4'}        {'(Intercept)'}         2.3655     0.90378
    {'Operator'}        {'5'}        {'(Intercept)'}        -1.9472     0.90378


    tStat      DF    pValue      Lower       Upper  
    0.63902    12     0.53482     -2.1831     3.3382
     1.3009    12     0.21772     -1.5849     3.9364
    -2.4027    12    0.033352     -4.9322    0.58909
     2.6174    12    0.022494    -0.39511     5.1261
    -2.1546    12    0.052216     -4.7079    0.81337

Вычислите 99% доверительные интервалы для случайных эффектов с помощью аппроксимации Саттретвейта для вычисления степеней свободы.

[~,~,stats] = randomEffects(lme,'DFMethod','satterthwaite','Alpha',0.01)
stats = 
    Random effect coefficients: DFMethod = 'Satterthwaite', Alpha = 0.01

    Group               Level        Name                   Estimate    SEPred 
    {'Operator'}        {'1'}        {'(Intercept)'}        0.57753     0.90378
    {'Operator'}        {'2'}        {'(Intercept)'}         1.1757     0.90378
    {'Operator'}        {'3'}        {'(Intercept)'}        -2.1715     0.90378
    {'Operator'}        {'4'}        {'(Intercept)'}         2.3655     0.90378
    {'Operator'}        {'5'}        {'(Intercept)'}        -1.9472     0.90378


    tStat      DF        pValue      Lower       Upper 
    0.63902    6.4253      0.5449      -2.684     3.839
     1.3009    6.4253     0.23799     -2.0858    4.4372
    -2.4027    6.4253    0.050386      -5.433      1.09
     2.6174    6.4253    0.037302    -0.89598     5.627
    -2.1546    6.4253    0.071626     -5.2087    1.3142

Метод Саттертвейта обычно производит меньшие значения степеней свободы (DF), что приводит к большим значениям p (pValue) и большие доверительные интервалы (Lower и Upper) для оценок случайных эффектов.