• 混合效应模型

2021-05-21 16:53:43
R语言中混合线性模型的实现以及参数解析
混合效应模型
R语言中混合线性模型的实现以及参数解析
结果分析
lm画图分析
R语言 固定/随机
分层数据处理
混合意义
R语言混合效应模型
随机效应ranef作图

广义线性回归模型
【1】
【2】


展开全文
• 面板模型混合效应模型This article shows how tree-boosting (sometimes also referred to as “gradient tree-boosting”) can be combined with mixed effects models using the GPBoost algorithm. Background is...
面板模型混合效应模型This article shows how tree-boosting (sometimes also referred to as “gradient tree-boosting”) can be combined with mixed effects models using the GPBoost algorithm. Background is provided on both the methodology as well as on how to apply the GPBoost library using Python. We show how (i) models are trained, (ii) parameters tuned, (iii) model are interpreted, and (iv) predictions are made. Further, we do a comparison of several alternative approaches. 本文展示了如何使用GPBoost算法将树增强(有时也称为“梯度树增强”)与混合效果模型结合使用。 提供了方法论以及如何使用Python应用GPBoost库的背景知识 。 我们展示了如何(i)训练模型，(ii)调整参数，(iii)解释模型，以及(iv)进行预测。 此外，我们对几种替代方法进行了比较。
介绍 (Introduction)
Tree-boosting with its well-known implementations such as XGBoost, LightGBM, and CatBoost, is widely used in applied data science. Besides state-of-the-art predictive accuracy, tree-boosting has the following advantages: 借助XGBoost，LightGBM和CatBoost等著名的实现来增强树性能在应用数据科学中得到了广泛的应用。 除具有最新的预测准确性外，增强树功能还具有以下优点：
Automatic modeling of non-linearities, discontinuities, and complex high-order interactions 自动建模非线性，不连续和复杂的高阶相互作用 Robust to outliers in and multicollinearity among predictor variables 稳健的预测变量中的异常值和多重共线性 Scale-invariance to monotone transformations of the predictor variables 尺度不变性到预测变量的单调变换 Automatic handling of missing values in predictor variables 自动处理预测变量中的缺失值 Mixed effects models are a modeling approach for clustered, grouped, longitudinal, or panel data. Among other things, they have the advantage that they allow for more efficient learning of the chosen model for the regression function (e.g. a linear model or a tree ensemble). 混合效果模型是针对聚类，分组，纵向或面板数据的建模方法。 除其他优点外，它们还具有以下优点：允许更有效地学习所选的回归函数模型(例如线性模型或树集合)。
As outlined in Sigrist (2020), combined gradient tree-boosting and mixed effects models often performs better than (i) plain vanilla gradient boosting, (ii) standard linear mixed effects models, and (iii) alternative approaches for combing machine learning or statistical models with mixed effects models. 如Sigrist(2020)所述， 结合梯度树增强和混合效应模型的性能通常比(i)普通香草梯度增强，(ii)标准线性混合效应模型和(iii)结合机器学习或统计的替代方法要好。具有混合效果模型的模型。
建模分组数据 (Modeling grouped data)
Grouped data (aka clustered data, longitudinal data, panel data) occurs naturally in many applications when there are multiple measurements for different units of a variable of interest. Examples include: 当对感兴趣变量的不同单位进行多次测量时，在许多应用程序中自然会出现分组数据(又名聚类数据，纵向数据，面板数据) 。 示例包括：
One wants to investigate the impact of some factors (e.g. learning technique, nutrition, sleep, etc.) on students’ test scores and every student does several tests. In this case, the units, i.e. the grouping variable, are the students and the variable of interest is the test score. 一个人想调查某些因素(例如学习技术，营养，睡眠等)对学生考试成绩的影响，而每个学生都进行几次考试。 在这种情况下，单位，即分组变量，是学生，而感兴趣的变量是测试分数。 A company gathers transaction data about its customers. For every customer, there are several transactions. The units are then the customers and the variable of interest can be any attribute of the transactions such as prices. 公司收集有关其客户的交易数据。 对于每个客户，都有几笔交易。 单位就是客户，兴趣变量可以是交易的任何属性，例如价格。 Basically, such grouped data can be modeled using four different approaches: 基本上，可以使用四种不同的方法对此类分组数据进行建模：
Ignore the grouping structure. This is rarely a good idea since important information is neglected. 忽略分组结构 。 因为忽略了重要信息，所以这很少是一个好主意。 Model each group (i.e. each student or each customer) separately. This is also rarely a good idea as the number of measurements per group is often small relative to the number of different groups. 分别对每个小组(即每个学生或每个客户)建模 。 这也不是一个好主意，因为每组的测量数量相对于不同组的数量通常很小。 Include the grouping variable (e.g. student or customer ID) in your model of choice and treat it as a categorical variable. While this is a viable approach, it has the following disadvantages. Often, the number of measurements per group (e.g. number of tests per student, number of transactions per customer) is relatively small and the number of different groups is large (e.g. number of students, customers, etc.). In this case, the model needs to learn many parameters (one for every group) based on relatively little data which can make the learning inefficient. Further, for trees, high cardinality categorical variables can be problematic. 在您选择的模型中包括分组变量(例如，学生或客户ID)，并将其视为分类变量。 尽管这是一种可行的方法，但它具有以下缺点。 通常，每组的测量数量(例如，每个学生的测试数量，每个客户的交易数量)相对较小，而不同组的数量却很大(例如，学生，客户数量等)。 在这种情况下，模型需要基于相对较少的数据来学习许多参数(每组一个)，这会使学习效率低下。 此外，对于树木，高基数类别变量可能会出现问题。 Model the grouping variable using so-called random effects in a mixed effects model. This is often a sensible compromise between the approaches 2. and 3. above. In particular, as illustrated below and in Sigrist (2020), this is beneficial compared to the other approaches in the case of tree-boosting. 在混合效应模型中使用所谓的随机效应对分组变量进行建模。 这通常是上述方法2和方法3之间的明智折衷。 尤其是，如下面和Sigrist(2020)中所示，与在树增强情况下的其他方法相比，这是有益的。  方法论背景 (Methodological background)
For the GPBoost algorithm, it is assumed that the response variable y is the sum of a non-linear mean function F(X) and so-called random effects Zb: 对于GPBoost算法，假定响应变量y是非线性均值函数F(X)与所谓的随机效应Zb的和 ：
y = F(X) + Zb + e y = F(X)+ Zb + e where 哪里
y the response variable (aka label) y响应变量(也称为标签) X contains the predictor variables (aka features) and F() is a potentially non-linear function. In linear mixed effects models, this is simply a linear function. In the GPBoost algorithm, this is an ensemble of trees. X包含预测变量(又称特征)，F()是潜在的非线性函数。 在线性混合效果模型中，这只是线性函数。 在GPBoost算法中，这是一棵树木。 Zb are the random effects which are assumed to follow a multivariate normal distribution Zb是假定遵循多元正态分布的随机效应 e is an error term e是错误项 The model is trained using the GPBoost algorithm, where trainings means learning the (co-)variance parameters (aka hyper-parameters) of the random effects and the regression function F(X) using a tree ensemble. The random effects Zb can be estimated (or predicted, as it is often called) after the model has been learned. In brief, the GPBoost algorithm is a boosting algorithm that iteratively learns the (co-)variance parameters and adds a tree to the ensemble of trees using a gradient and/or a Newton boosting step. The main difference to existing boosting algorithms is that, first, it accounts for dependency among the data due to clustering and, second, it learns the (co-)variance of the random effects. See Sigrist (2020) for more details on the methodology. In the GPBoost library, (co-)variance parameters can be learned using (accelerated) gradient descent or Fisher scoring, and trees are learned using the LightGBM library. In particular, this means that the full functionality of LightGBM is available. 使用GPBoost算法对模型进行训练，其中训练意味着 使用树集合 学习 随机效应 的(共)方差参数(aka超参数) 和回归函数F(X) 。 在学习模型之后，可以估计(或预测，通常称为)随机效应Zb。 简而言之，GPBoost算法是一种增强算法，它迭代地学习(协)方差参数，并使用梯度和/或牛顿增强步骤将一棵树添加到树的集合中。 与现有增强算法的主要区别在于，首先，它考虑了由于聚类导致的数据之间的依赖性，其次，它学习了随机效应的(协)方差。 有关该方法的更多详细信息，请参见Sigrist(2020) 。 在GPBoost库中，可以使用(加速)梯度下降或Fisher评分来学习(协)方差参数，而可以使用LightGBM库来学习树。 特别是，这意味着可以使用LightGBM的全部功能。
如何在Python中使用GPBoost库 (How to use the GPBoost library in Python)
In the following, we show how combined tree-boosting and mixed effects models can be applied using the GPBoost library from Python. Note that there is also an equivalent R package. More information on this can be found here. 在下面的内容中，我们展示了如何使用Python的GPBoost库应用组合的树加速和混合效果模型。 请注意，还有一个等效的R包。 有关此的更多信息，请参见此处 。
安装 (Installation)
pip install gpboost -U 模拟数据 (Simulate data)
We use simulated data here. We adopt a well known non-linear function F(X). For simplicity, we use one grouping variable. But one could equally well use several random effects including hierarchically nested ones, crossed ones, or random slopes. The number of samples is 5'000 and the number of different groups or clusters is 500. We also generate test data for evaluating the predictive accuracy. For the test data, we include both known, observed groups as well as novel, unobserved groups. 我们在这里使用模拟数据。 我们采用了众所周知的非线性函数F(X) 。 为简单起见，我们使用一个分组变量。 但是同样可以很好地使用几种随机效果，包括层次嵌套的效果，交叉效果或随机斜率。 样本数量为5,000，不同组或群集的数量为500。我们还生成测试数据以评估预测准确性。 对于测试数据，我们既包括已知的观察组，也包括新颖的未观察组。
import gpboost as gpbimport numpy as npimport sklearn.datasets as datasetsimport timeimport pandas as pd# Simulate datantrain = 5000 # number of samples for trainingn = 2 * ntrain # combined number of training and test datam = 500  # number of categories / levels for grouping variablesigma2_1 = 1  # random effect variancesigma2 = 1 ** 2  # error variance# Simulate non-linear mean functionnp.random.seed(1)X, F = datasets.make_friedman3(n_samples=n)X = pd.DataFrame(X,columns=['variable_1','variable_2','variable_3','variable_4'])F = F * 10**0.5 # with this choice, the fixed-effects regression function has the same variance as the random effects# Simulate random effectsgroup_train = np.arange(ntrain)  # grouping variablefor i in range(m):    group_train[int(i * ntrain / m):int((i + 1) * ntrain / m)] = igroup_test = np.arange(ntrain) # grouping variable for test data. Some existing and some new groupsm_test = 2 * mfor i in range(m_test):    group_test[int(i * ntrain / m_test):int((i + 1) * ntrain / m_test)] = igroup = np.concatenate((group_train,group_test))b = np.sqrt(sigma2_1) * np.random.normal(size=m_test)  # simulate random effectsZb = b[group]# Put everything togetherxi = np.sqrt(sigma2) * np.random.normal(size=n)  # simulate error termy = F + Zb + xi  # observed data# split train and test datay_train = y[0:ntrain]y_test = y[ntrain:n]X_train = X.iloc[0:ntrain,]X_test = X.iloc[ntrain:n,] 学习和做出预测 (Learning and making predictions)
The following code shows how one trains a model and makes predictions. As can be seen below, the learned variance parameters are close to the true ones. Note that when making predictions, one can make separate predictions for the mean function F(X) and the random effects Zb. 以下代码显示了如何训练模型并进行预测。 如下所示，学习的方差参数接近真实参数。 注意，进行预测时，可以对均值函数F(X)和随机效应Zb进行单独的预测。
# Define and train GPModelgp_model = gpb.GPModel(group_data=group_train)# create dataset for gpb.train functiondata_train = gpb.Dataset(X_train, y_train)# specify tree-boosting parameters as a dictparams = { 'objective': 'regression_l2', 'learning_rate': 0.1,    'max_depth': 6, 'min_data_in_leaf': 5, 'verbose': 0 }# train modelbst = gpb.train(params=params, train_set=data_train, gp_model=gp_model, num_boost_round=32)gp_model.summary() # estimated covariance parameters# Covariance parameters in the following order:# ['Error_term', 'Group_1']# [0.9183072 1.013057 ]# Make predictionspred = bst.predict(data=X_test, group_data_pred=group_test)y_pred = pred['fixed_effect'] + pred['random_effect_mean'] # sum predictions of fixed effect and random effectnp.sqrt(np.mean((y_test - y_pred) ** 2)) # root mean square error (RMSE) on test data. Approx. = 1.25 参数调整 (Parameter tuning)
A careful choice of the tuning parameters is important for all boosting algorithms. Arguably the most important tuning parameter is the number of boosting iterations. A too large number will often result in over-fitting in regression problems and a too small value in “under-fitting”. In the following, we show how the number of boosting iterations can be chosen using cross-validation. Other important tuning parameters include the learning rate, the tree-depth, and the minimal number of samples per leaf. For simplicity, we do not tune them here but use some default values. 仔细选择调整参数对于所有升压算法都很重要。 可以说，最重要的调整参数是加速迭代的次数。 数量太大通常会导致回归问题过度拟合，而“欠拟合”值太小。 在下面，我们展示了如何使用交叉验证来选择增强迭代的次数。 其他重要的调整参数包括学习率，树深度和每片叶子的最少样本数。 为简单起见，我们在这里不对其进行调整，而是使用一些默认值。
# Parameter tuning using cross-validation (only number of boosting iterations)gp_model = gpb.GPModel(group_data=group_train)cvbst = gpb.cv(params=params, train_set=data_train,               gp_model=gp_model, use_gp_model_for_validation=False,               num_boost_round=100, early_stopping_rounds=5,               nfold=4, verbose_eval=True, show_stdv=False, seed=1)best_iter = np.argmin(cvbst['l2-mean'])print("Best number of iterations: " + str(best_iter))# Best number of iterations: 32 特征重要性和部分依赖图 (Feature importance and partial dependence plots)
Feature importance plots and partial dependence plots are tools for interpreting machine learning models. These can be used as follows. 特征重要性图和偏相关图是解释机器学习模型的工具。 这些可以如下使用。
# Plotting feature importancesgpb.plot_importance(bst)Feature importance plot 特征重要性图 Univariate partial dependence plots 单变量偏相关图
from pdpbox import pdp# Single variable plotspdp_dist = pdp.pdp_isolate(model=bst, dataset=X_train,                                 model_features=X_train.columns,                           feature='variable_2',                            num_grid_points=100)pdp.pdp_plot(pdp_dist, 'variable_2', plot_lines=True)Partial dependence plot for variable 2 变量2的偏相关图 Multivariate partial dependence plots 多元偏相关图
# Two variable interaction plotinter_rf = pdp.pdp_interact(model=bst, dataset=X_train, model_features=X_train.columns,                             features=['variable_1','variable_2'])pdp.pdp_interact_plot(inter_rf, ['variable_1','variable_2'], x_quantile=True, plot_type='contour', plot_pdp=True)Two dimensional partial dependence plot for visualizing interactions 二维局部依赖图，用于可视化交互  SHAP值 (SHAP values)
SHAP values and dependence plots are another important tool for model interpretation. These can be created as follows. SHAP值和依赖性图是模型解释的另一个重要工具。 这些可以如下创建。
Edit: this is currently not yet fully supported by the shap Python package. It should be available soon (hopefully in the next days, see here for the current status). In the meantime, you have to copy-paste a few lines of code to your shap Python package. Just go to the location where your python packages are and add these green marked lines of code to the shap/tree_explainers/tree.py file. 编辑：shap Python软件包目前尚未完全支持此功能。 它应该很快就可用(希望在接下来的几天中，请参阅 此处 了解当前状态)。 同时，您必须将几行代码复制粘贴到您的shap Python包中。 只需转到python包所在的位置，然后将 这些 带有 绿色标记的代码行 添加 到shap / tree_explainers / tree.py文件即可。
import shapshap_values = shap.TreeExplainer(bst).shap_values(X_test)shap.summary_plot(shap_values, X_test)shap.dependence_plot("variable_2", shap_values, X_test)SHAP values SHAP值 SHAP dependence plot for variable 2 变量2的SHAP依赖图  与替代方法的比较 (Comparison to alternative approaches)
In the following, we compare the GPBoost algorithm to several existing approaches using the above simulated data. We consider the following alternative approaches: 接下来，我们使用上述模拟数据将GPBoost算法与几种现有方法进行比较。 我们考虑以下替代方法：
A linear mixed effects model (‘Linear_ME’) where F(X) is a linear function 线性混合效果模型('Linear_ME') ，其中F(X)是线性函数 Standard gradient tree-boosting ignoring the grouping structure (‘Boosting_Ign’) 标准梯度树增强忽略分组结构('Boosting_Ign') Standard gradient tree-boosting including the grouping variable as a categorical variables (‘Boosting_Cat’) 标准梯度树增强功能，包括将分组变量作为分类变量('Boosting_Cat') Mixed-effects random forest (‘MERF’) (see here and Hajjem et al. (2014) for more information) 混合效应随机森林(“ MERF”) (有关更多信息，请参见此处和Hajjem等(2014) ) We compare the algorithms in terms of predictive accuracy measured using the root mean square error (RMSE) and computational time (clock time in seconds). The results are shown in the table below. The code for producing these results can be found below in the appendix. 我们根据均方根误差(RMSE)和计算时间(以秒为单位的时钟时间)测得的预测准确性比较算法。 结果如下表所示。 产生这些结果的代码可以在下面的附录中找到。
Comparison of GPBoost and alternative approaches. GPBoost与替代方法的比较。 We see that GPBoost and MERF perform clearly best (and almost equally well) in terms of predictive accuracy. Further, the GPBoost algorithm is approximately 1000 times faster than the MERF algorithm. The linear mixed effects model (‘Linear_ME’) and tree-boosting ignoring the grouping variable (‘Boosting_Ign’) have clearly lower predictive accuracy. Tree-boosting with the grouping variable included as a categorical variable also shows lower predictive accuracy than GPBoost or MERF. 我们看到，就预测准确性而言，GPBoost和MERF的表现明显最佳(并且几乎同样出色)。 此外，GPBoost算法比MERF算法快约1000倍。 线性混合效果模型('Linear_ME')和忽略分组变量的'boosting'(boosting_Ign')具有明显较低的预测准确性。 与GPBoost或MERF相比，将分组变量作为类别变量包括在内的树式提升也显示出较低的预测准确性。
Note that, for simplicity, we do only one simulation run (see Sigrist (2020) for a much more detailed comparison). Except for MERF, all computations are done using the GPBoost library version 0.2.1 compiled with MSVC version 19.24.28315.0. Further, we use the MERF Python package version 0.3. 请注意，为简单起见，我们仅进行一次模拟运行(有关 详细比较， 请参阅 Sigrist(2020) )。 除MERF外，所有计算均使用GPBoost库0.2.1版和MSVC 19.24.28315.0版进行编译。 此外，我们使用MERF Python软件包0.3版。
结论 (Conclusions)
GPBoost allows for combining mixed effects models and tree-boosting. If you apply linear mixed effects models, you should investigate whether the linearity assumption is indeed appropriate. The GPBoost model allows for relaxing this assumption. It may help you to find non-linearities and interactions and achieve higher predictive accuracy. If you are a frequent user of boosting algorithms such as XGBoost and LightGBM and you have categorical variables with potentially high-cardinality, GPBoost (which extends LightGBM) can make learning more efficient and result in higher predictive accuracy. GPBoost允许将混合效果模型和树加速结合在一起。 如果应用线性混合效应模型，则应调查线性假设是否确实合适。 GPBoost模型允许放宽此假设。 它可以帮助您发现非线性和相互作用，并获得更高的预测准确性。 如果您经常使用诸如XGBoost和LightGBM之类的增强算法，并且您的分类变量具有潜在的高基数，那么GPBoost(扩展了LightGBM)可以使学习 效率更高， 并获得更高的预测准确性。
To the best of our knowledge, the GPBoost library is currently unmatched in terms of computational speed and predictive accuracy. Additional advantages are that GPBoost supports a range of model interpretation tools (variable importance values, partial dependence plots, SHAP values etc.). Further, it also supports other types of random effects such as Gaussian processes in addition to grouped or clustered random effects. 据我们所知，GPBoost库目前在计算速度和预测准确性方面无与伦比。 GPBoost的其他优点是支持多种模型解释工具(可变重要性值，偏相关图，SHAP值等)。 此外，除了分组或聚类的随机效应之外，它还支持其他类型的随机效应，例如高斯过程。
Hopefully, you have found this article useful. More information on GPBoost can be found in the companion article Sigrist (2020) and on github. 希望您发现本文很有用。 有关GPBoost的更多信息，请参见配套文章Sigrist(2020)和github 。
翻译自: https://towardsdatascience.com/tree-boosted-mixed-effects-models-4df610b624cb面板模型混合效应模型
展开全文
• PPT中讲解了混合效应模型的原理，分别在纵向数据（面板数据）和分层数据中的应用，结合R代码讲解了如何实现应用。
• mixed-effects models，混合效应模型，随机效应的数据结构，
• 混合效应模型 多水平模型.ppt
• HPmixed 通过求解亨德森混合模型方程来拟合线性混合效应模型。 有关 MATLAB 工具箱的当前状态，请参阅 HPmixed 开发，网址为https://github.com/witkovsky/HPmixed
• 随机效应与混合效应模型 SAS实践两个处理变量都具有固定效应两个处理变量都具有随机效应GLM procedureMixed procedure, type 1 methodMixed procedure, REML method只有一个处理变量具有随机效应GLM ...
随机效应与混合效应模型 SAS实践两个处理变量都具有固定效应两个处理变量都具有随机效应GLM procedureMixed procedure, type 1 methodMixed procedure, REML method只有一个处理变量具有随机效应GLM procedureRestricted ModelUnrestricted Model两两比较Mixed procedure
精密仪器制造非常依赖零部件尺寸的精确度。一位工程师随机选取了三种仪器对某零部件的二十个关键部位进行了测量，每一个部位重复测量了两次。这个测量试验的目的是研究零部件部位与测量仪器对测量结果的影响，零部件部位与测量仪器是处理变量。实际上这两个处理变量都应该考虑为随机的，但为了比较固定效应与随机效应的区别，下面我们分别用固定效应、随机效应与混合效应模型分析这个试验。
两个处理变量都具有固定效应
假设两个处理变量都是固定的。
proc glm data=randr;/*数据表读取比较长，放在文末，数据表名为randr*/
class operator part;/*定义仪器与部位为类型变量*/
model resp=operator|part;/*|表示使用full model，即operator part operator*part*/
run;

这个GLM模型是显著的，下面是处理变量的Type III 平方和分解：

这个结果说明测量仪器不会对测量结果造成显著的影响，但不管用什么仪器测量，每个部位测量精确度都有显著差异。
两个处理变量都具有随机效应
GLM procedure
假设两个处理变量都是随机的。
proc glm data=randr;
class operator part;
model resp=operator|part;
random operator part operator*part/test;
run;

与固定效应模型相比，随机效应模型只需要在GLM procedure中加入random语句。在这段SAS代码中，random operator part operator*part/test; 语句表示operator part operator*part这三个因素都具有随机效应，/test表示对随机效应进行F检验，之所以要加上/test是因为随机效应模型中并非所有的均方和都与残差的均方和比较：

随机效应模型也是显著的，下面是处理变量的Type III 平方和分解：

这个结果与随机模型的结果一模一样，但是我们只能用这个结果做交互项operator*part的推断，要对另外两个因素做推断，需要random语句的结果：

这两张表是random语句的结果。在第二张表中，交互项与残差的平方和分解结果与固定效应模型和随机效应模型的都相同；第一张表是random语句中/test的结果，对于operator与part而言，error term是operator*part，这个结果同样说明测量仪器不会对测量结果造成显著的影响，但每个部位测量精确度都有显著差异。
需要注意的是random语句中的/test语句可以用test语句代替：
proc glm data=randr;
class operator part;
model resp=operator|part;
random operator part operator*part;
test H=operator E=operator*part;
test H=part E=operator*part;
run;

语句test H=operator E=operator*part;表示检验operator的效应，用operator*part的均方和作为error term的均方和。语句test H=part E=operator*part;表示检验part的效应，用operator*part的均方和作为error term的均方和。这两个语句输出的结果与上面的第一张表相同：

Mixed procedure, type 1 method
随机效应模型也可以用Mixed procedure来做，具体有两种方法，type 1 method和REML method：
proc mixed cl maxiter=20 covtest method=type1 data = randr;/*covtest表示估计每个效应的方差、cl表示列出方差的置信区间*/
class operator part;
model resp = ;/*mixed procedure后的随机因素不用写出来*/
random operator part operator*part;/*mixed procedure没有/test语句*/
run;


type 1 method输出的结果与GLM procedure的random语句输出结果一样，下面是covtest与cl语句的输出，包括每个因素的方差估计、标准差以及置信区间，type 1 method估计方差的方法是最小二乘法。

Mixed procedure, REML method
proc mixed cl maxiter=20 covtest method=reml;
class operator part;
model resp = ;
random operator part operator*part;
run;


REML method估计方差的方法是残差最大似然方法，是Mixed procedure的默认方法。
只有一个处理变量具有随机效应
假设operator是固定的因素。
GLM procedure
Restricted Model
proc glm data=randr;
class operator part;
model resp=operator|part;
random  part operator*part; /*operator是固定的，随机的只有part和交互项*/
test H=operator E=operator*part;
run;

注意restricted model在做推断时，检验如下

因此上面那段SAS代码中加了一个test语句，test H=operator E=operator*part;用以对operator的效应做推断。

这是GLM procedure的输出结果，part和operator的结果是可以参考的，operator的结果需要参考test语句的输出：

Unrestricted Model
proc glm data=randr;
class operator part;
model resp=operator|part;
random  part operator*part/test;
run;

Restricted Model与Unrestricted Model相比唯一的区别就是交互项完全随机还是交互项关于固定效应的因子的边际效应是固定的。根据Unrestricted model的EMS，

part与operator的均方和都需要与它们的交互项进行比较，所以用/test语句来实现，下面是/test的输出结果

两两比较
proc glm;
class operator part;
model resp=operator|part;
random part operator*part / test;
means operator / tukey lines E=operator*part;
lsmeans operator / adjust=tukey E=operator*part tdiff stderr;
run;

一般对固定效应的因素，不同的因素取值对测量值的效应两两之间可以进行比较。means语句和lsmeans语句都可以做比较，means语句means operator / tukey lines E=operator*part;表示对operator的效应进行比较，用Tukey方法，设定error term为operator*part，lines表示用线图表示结果：

Estimate是每一种测量仪器测量结果的均值，蓝线贯穿了三个均值表示这三个均值没有显著差异。lsmeans语句lsmeans operator / adjust=tukey E=operator*part tdiff stderr;可以做更精细的比较：

Mixed procedure
proc mixed alpha=.05 cl covtest;
class operator part;
model resp=operator / ddfm=kr;
random part operator*part;
lsmeans operator / alpha=.05 cl diff adjust=tukey;
run;

上面的SAS代码中只有ddfm=kr语句需要注意一下，ddfm或者ddf用来指定交互项自由度的计算方法，一般用kr就可以了。lsmeans语句的输出包括operator均值的估计、置信区间以及两两比较：


展开全文
• 本文介绍了线性混合效应模型的新型贝叶斯分析。该分析基于部分折叠的方法，该方法允许某些组件从模型中...为了构建PCG采样器而不使组件更新复杂化，我们考虑通过在线性混合效应模型中根据组内方差表示组间方...
原文链接：http://tecdat.cn/?p=2654

本文介绍了线性混合效应模型的新型贝叶斯分析。该分析基于部分折叠的方法，该方法允许某些组件从模型中部分折叠。得到的部分折叠的Gibbs（PCG）采样器被构造成适合线性混合效应模型，预计会比相应的Gibbs采样器表现出更好的收敛特性。为了构建PCG采样器而不使组件更新复杂化，我们考虑通过在线性混合效应模型中根据组内方差表示组间方差来重新参数化模型组件。

简介

已经开发出混合效应模型来处理相关响应数据并考虑多种变化来源。为了解释响应变量的依赖结构，混合效应模型不仅包含固定效应，还包含将某些协变量视为随机变量的随机效应。混合效应模型在一段时间内对受试者进行重复测量的环境中特别方便。与传统的纵向数据方法相比，混合效应模型也可以处理缺失值。

方法 具有适当先验分布的混合效应模型考虑一般的混合效应模型

（1）

（2）

其中b=（b1，b2，...，bk）是随机效应的q×k矩阵，Y= {Yi}ki= 1是观测数据的集合，代表逆Wishart分布，和

默顿的跳跃扩散模型

考虑默顿的跳跃扩散模型其目的是模型跳跃由于罕见的经济事件或新闻突然资产价格。该模型由。给出

（3）

其中St代表时间t的资产价格，γ是资产的瞬时预期收益，σ是资产收益的瞬时标准差，Wt是维纳过程，对数跳跃大小Jt是均值μ高斯随机变量Ĵ和方差σ2Ĵ，和ñ吨是一个泊松过程与到达速率λ。在没有跳跃过程的情况下，（3）中的模型被称为几何布朗运动过程，并且{St}Tt= 1的连续对数比率与平均γ和方差σ独立高斯随机变量2。然而，当在时间t发生跳跃时，该过程不再是连续的; S t -明确表示跳转之间的不连续性。此外，我们考虑基于日常的资产价格，因此假设在每个时间间隔内最多发生一次跳跃，即

模拟

为了说明PCG采样器相对于Gibbs采样器的改进收敛特性，对具有适当先验分布的混合效应模型和Merton的跳跃扩散模型进行了仿真研究。首先，在（7）中具有适当先验分布的混合效应模型中，我们假设存在k = 100个组，并且每个组具有相同的大小n i = 2.模型参数的真实值被设置为，σ 2 = 1，并且

图1由具有适当先验分布的混合效应模型构建的Gibbs采样器模拟的每个模型参数的混合图，自相关图和边际后验概率分布函数。

图2由具有适当先验分布的混合效应模型构建的PCG采样器模拟的每个模型参数的混合图，自相关图和边际后验概率分布函数。

图3由具有适当先验分布的Merton跳跃扩散模型构建的Gibbs采样器模拟的每个模型参数的混合图，自相关图和边际后验概率分布函数。

图4由具有适当先验分布的Merton跳跃扩散模型构建的PCG采样器模拟的每个模型参数的混合图，自相关图和边际后验概率分布函数。

适用于睡眠剥夺研究为了说明所提方法在实际数据问题中的优势，混合效应模型适用于睡眠剥夺的纵向数据。睡眠限制和随后恢复期间性能退化和恢复的模式：睡眠剂量 - 反应研究。。在睡眠剥夺研究中，对18名长途卡车司机进行了一系列测试的平均反应时间（以毫秒为单位），从第1天到第9天，他们被限制为每晚3小时的睡眠。在第0天，平均在从23:00到07:00睡眠8小时后测量反应时间。图5主体内系数和混合效应系数的比较。空心圆圈表示固定效应系数的估计值，实心圆圈表示受试者内系数的估计值，闭合三角形表示由R包lme4计算的混合效应估计值，实心方块表示由PCG采样器计算的混合效应估计值，以及箭头表示受试者内固定效应和混合效应模型之间估计值的变化。

图6混合效应系数的后验分布。闭环表示受试者内固定效应系数的估计，闭合三角表示由R包lme4计算的混合效应估计，而闭合正方形表示由PCG采样器计算的混合效应估计。

图7带有观测数据的拟合线性线。

讨论

本文提出了线性混合效应模型的有效贝叶斯分析的部分折叠方法。这种方法的核心是混合效应模型的新参数化的公式，它可以应用部分折叠，而不会使得到的PCG采样器中的组件更新复杂化。结果表明，一般混合效应模型和默顿跳跃扩散模型的PCG采样大大提高了相应Gibbs采样器的收敛性。

相关推荐：

线性混合效应模型Linear Mixed-Effects Models的部分..

R语言 线性混合效应模型实战案例

基于R语言的lmer混合线性回归模型

展开全文
• 针对道面状况指数（PCI）历史资料的面板数据特征，以多项式作为预测函数，将部分参数视为随机变量，建立二类线性混合效应模型.结果表明：线性混合效应模型能够有效分解变量之间的异方差，弥补传统回归模型的不足，为...
• 贝叶斯线性混合效应模型 R的软件包。基于 该软件包的预构建捆绑包可在。 可以使用典型的install.packages()机制从R内部安装这些文件。 从源代码安装的步骤： 从R内安装remotes软件包： install.packages( " ...
• MixedModels.jl, 用于拟合( 统计) 混合效应模型的Julia封装 在 Julia 文档 mixed的混合效应模型英镑PackageEvaluator英镑累积构建状态 安装软件包已经在 METADATA.jl 中注册，因此可以与 Pkg.add 一起安
• 【原创】R语言 线性混合效应模型实战案例数据分析报告论文（代码+数据） .docx
• 广义线性混合效应模型的R平方 此函数已被完全重写，并作为sem.model.fits包含在逐段sem.model.fits软件包中。 在此处查看更新： ： 描述： Schielzeth和Nakagawa的R2在R中用于广义线性混合效果模型的实现。此功能...
• 我们已经学习了如何处理混合效应模型。本文的重点是如何建立和可视化混合效应模型的结果。 设置 本文使用数据集，用于探索草食动物种群对珊瑚覆盖的影响。 knitr::opts_chunk\$set(echo = TRUE) library...
• 在本文中，我们将用R语言对数据进行线性混合效应模型的拟合，然后可视化你的结果。 线性混合效应模型是在有随机效应时使用的，随机效应发生在对随机抽样的单位进行多次测量时。来自同一自然组的测量结果本身并不是...
• glmm-course, 在 R 中，workshop 对回归GLMS 混合效应模型和GLMMs进行 基于的广义线性混合效应建模方法这两天 workshop 将使用 R 编程语言来关注广义线性混合效应模型( GLMMs ；分层/多级模型) 。 我们将专注于GLMMs...
• 线性混合效应模型学习

千次阅读 2020-03-25 21:55:02
1.概念 混合线性模型，（Mixed linear model）是方差分量模型中，既含有固定效应，又含有随机效应的模型。...应用混合效应线性模型的步骤:① 确定固定效应和随机效应;② 选择协方差结构，常见的有7种。a. 独立结...
• 本文介绍了线性混合效应模型的新型贝叶斯分析。该分析基于部分折叠的方法，该方法允许某些组件从模型中部分折叠。得到的部分折叠的Gibbs（PCG）采样器被构造成适合线性混合效应模型，预计会比相应的Gibbs采样器表现...
• 混合模型的输出将给出一个解释值列表，其效应值的估计值和置信区间，每个效应的p值以及模型拟合程度的至少一个度量。如果您有一个变量将您的数据样本描述为您可能收集的数据的子集，则应该使用混合模型而不是简单的...
• 为研究混合效应Logistic模型确定马尔可夫状态转移概率矩阵的方法及效果，以道面结构厚度、道面使用时间、状态等级和交通量等因素变量为固定效应，以截距为随机效应，建立混合效应Logistic模型．采用多个机场积累的...
• 例如，多级模型本身可以称为分级线性模型，随机效应模型，多级模型，随机截距模型，随机斜率模型或汇集模型。根据学科，使用的软件和学术文献，许多这些术语可能指的是相同的一般建模策略。 读入数据 多级模型...
• 称为“石灰树”的limetr是一个Python程序包，用于解决具有线性随机效果的混合效果模型。 此外，该软件包还提供了强大的回归选项，称为“修剪”。 安装 该软件包可以通过pip安装， pip install limetr 或者，您...
• 好多同学咨询我混合效应模型，有些问题自己需要讲很多遍，想想就再开一贴，争取这一篇文章给大家写清楚。 混合效应模型名字很多，Hierarchical Modeling, also known asMixed Effects Modeling，有叫分层模型的，...
• R| 混合效应模型，lme4

千次阅读 2019-04-09 23:45:16