R 和编码不';t似乎不起作用:截距是';参考';水平而不是所有水平的总平均值

R 和编码不';t似乎不起作用:截距是';参考';水平而不是所有水平的总平均值,r,regression,refactoring,R,Regression,Refactoring,我目前正在使用R中的robu()函数运行一个应用稳健方差估计的元回归。这似乎工作正常。然而,我对使用总和而不是治疗编码感兴趣,这样我就可以将因子的每个水平与总平均值进行比较(dataset=Data\u meta\u REG,factor=memtype,levels=other,偶发性和有效性)。此方法已在现有论文中使用 我是R的新手,到目前为止,通过搜索各种论坛,我已经成功地从R文档中拼凑出了一些东西。不幸的是,当我运行分析时,截距似乎不是总平均值,而是分配为参考的级别的平均值(例如,如果我

我目前正在使用R中的
robu()
函数运行一个应用稳健方差估计的元回归。这似乎工作正常。然而,我对使用总和而不是治疗编码感兴趣,这样我就可以将因子的每个水平与总平均值进行比较(
dataset=Data\u meta\u REG,factor=memtype,levels=other
,偶发性和有效性)。此方法已在现有论文中使用

我是R的新手,到目前为止,通过搜索各种论坛,我已经成功地从R文档中拼凑出了一些东西。不幸的是,当我运行分析时,截距似乎不是总平均值,而是分配为参考的级别的平均值(例如,如果我交换级别的顺序,则返回截距的不同值,而如果是总平均值,则应相同)

所以我遇到了一点麻烦,想知道是否有人可以强调我的错误?我希望这是件简单的事,我错了!尽管如此,这还是让我很沮丧,因为它阻碍了我继续工作,所以任何帮助都将不胜感激

这就是我迄今为止所尝试的:

library("metafor")
library("dplyr")
library("robumeta")

# Setting memtype as factor
Data_meta_REG_contrasts = Data_meta_REG %>% mutate(memtype = as.factor(memtype))

                                
# Setting contrast using function contr.sum
contrasts(Data_meta_REG_contrasts$memtype) = contr.sum(3)

# Regression model using robu() function 
res_memtype <- robu(effect.size ~ factor(memtype), data = Data_meta_REG_contrasts, 
                    studynum = study, var.eff.size = var.eff.size, 
                    modelweights = "CORR", small = TRUE) 
print(res_memtype)

# Output with ‘another’ as missing variable/’reference’/’intercept’
                         Estimate StdErr t-value  dfs P(|t|>) 95% CI.L 95% CI.U
1            X.Intercept.   0.5274  0.671   0.786 2.21   0.507    -2.11     3.16
2 factor.memtype.episodic  -0.0852  0.680  -0.125 3.51   0.907    -2.08     1.91
3  factor.memtype.working  -0.2076  0.702  -0.296 3.85   0.783    -2.19     1.77

# Output with ‘working’ as missing variable/’reference’/’intercept’
                          Estimate StdErr t-value   dfs P(|t|>) 95% CI.L 95% CI.U Sig
1            X.Intercept.    0.320  0.208   1.539  8.52   0.160   -0.154    0.794    
2 factor.memtype.episodic    0.122  0.238   0.515 15.62   0.614   -0.382    0.627    
3    factor.memtype.other    0.208  0.702   0.296  3.85   0.783   -1.771    2.186  
如果需要进一步澄清我的问题,请告诉我

非常感谢
Lucy

我不明白为什么您不能使用其中一个示例数据集来说明这个问题。我们可以看到您一直使用的编码策略。目前无法进行任何调试。好的,谢谢你的提醒。我将看一看这些,并尝试重现这个问题。我拼凑了一个例子,我确实得到了不同的估计,当截距项在模型中,但当公式的
-1
形式被使用时,与治疗对比模型相比,具有总和对比属性的因子。我想知道问题是否出在标签上,但数学机器在工作。?我认为未来的方法是用代码构造一个示例,您将知道正确的答案,然后在该数据中运行模型。@IRTFM非常感谢您花时间来测试这一点。根据您的建议,我还只是在一个简单的数据集上运行了代码,发现sum和treatment对比都能按预期工作。然而,这只是基本线性回归模型(lm)的情况。robu()模型似乎忽略了集合对比度,因此我一定有错误的代码将总和编码与稳健方差估计结合起来。感谢您帮助我确定问题所在@它已经成功了!!我对robu()标签进行了一次尝试,结果是,我使用effect.size~factor(memtype),删除单词“factor”将返回正确的和编码输出(即截取为格兰德平均值)。我不再在输出表行中获得单独的标签(例如,memtype1而不是episodic),但是数字起作用了,所以我很高兴!再次感谢-非常感谢:)
                      Estimate StdErr t-value   dfs P(|t|>) 95% CI.L 95% CI.U Sig
1  factor.memtype.another    0.527  0.671   0.786  2.21 0.50716   -2.110    3.164    
2 factor.memtype.episodic    0.442  0.116   3.823 10.22 0.00323    0.185    0.699 ***
3  factor.memtype.working    0.320  0.208   1.539  8.52 0.16011   -0.154    0.794