我正在尝试调整线性模型上的对比编码,我想知道因子的每个级别是否与总平均值显着不同。
\n让\xe2\x80\x99s 表示该因子具有级别“A”、“B”和“C”。最常见的对照治疗对比显然将“A”设置为参考水平,并将“B”和“C”与其进行比较。这不是我想要的,因为“A”级没有出现在模型摘要中。
\n偏差编码似乎也没有给我想要的东西,因为它将级别“C”的对比矩阵设置为[-1,-1,-1],现在这个级别没有显示在模型摘要中。
set.seed(1)\ny <- rnorm(6, 0, 1)\nx <- factor(rep(LETTERS[1:3], each = 2))\nfit <- lm(y ~ x, contrasts = list(x = contr.sum))\nsummary(fit)\nRun Code Online (Sandbox Code Playgroud)\n此外,报告的级别名称已从“A”、“B”更改为“1”和“2”。
\nCall:\nlm(formula = y ~ x, contrasts = list(x = contr.sum))\n\nResiduals:\n 1 2 3 4 5 6 \n-0.405 0.405 -1.215 1.215 0.575 -0.575 \n\nCoefficients:\n Estimate Std. Error t value Pr(>|t|)\n(Intercept) -0.02902 0.46809 -0.062 0.954\nx1 -0.19239 0.66198 -0.291 0.790\nx2 0.40885 0.66198 0.618 0.581\n\nResidual standard error: 1.147 on 3 degrees of freedom\nMultiple …Run Code Online (Sandbox Code Playgroud) 我对一些属性,包括两个分类属性运行的线性回归,B并且F,我没有得到每一个因子水平我有一个系数值.
B有9个级别,F有6个级别.当我最初运行模型(带截距)时,我得到8个系数B,F其中5个我理解为拦截中包含的每个系数的第一级.
我希望在其中排列水平B并F基于它们的系数,所以我-1在每个因子之后添加以将截距锁定为0,以便我可以获得所有级别的系数.
Call:
lm(formula = dependent ~ a + B-1 + c + d + e + F-1 + g + h, data = input)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
a 2.082e+03 1.026e+02 20.302 < 2e-16 ***
B1 -1.660e+04 9.747e+02 -17.027 < 2e-16 ***
B2 -1.681e+04 9.379e+02 -17.920 < 2e-16 ***
B3 -1.653e+04 9.254e+02 -17.858 < 2e-16 ***
B4 -1.765e+04 …Run Code Online (Sandbox Code Playgroud) 我有兴趣计算 R 中线性回归后系数线性组合的估计值和标准误差。例如,假设我有回归和测试:
\n\ndata(mtcars)\nlibrary(multcomp)\nlm1 <- lm(mpg ~ cyl + hp, data = mtcars)\nsummary(glht(lm1, linfct = 'cyl + hp = 0'))\nRun Code Online (Sandbox Code Playgroud)\n\ncyl这将估计和上的系数之和的值hp,并根据 生成的协方差矩阵提供标准误差lm。
但是,假设我想将我的标准错误聚集在第三个变量上:
\n\ndata(mtcars)\nlibrary(multcomp)\nlibrary(lmtest)\nlibrary(multiwayvcov)\nlm1 <- lm(mpg ~ cyl + hp, data = mtcars)\nvcv <- cluster.vcov(lm1, cluster = mtcars$am)\nct1 <- coeftest(lm1,vcov. = vcv)\nRun Code Online (Sandbox Code Playgroud)\n\nct1包含我的聚类的 SE am。但是,如果我尝试使用ct1中的对象glht,则会收到错误消息
\n\n\nmodelparm.default(model, ...) 中的错误:\n 未找到 \xe2\x80\x98model\xe2\x80\x99 的 \xe2\x80\x98coef\xe2\x80\x99 方法!
\n
关于如何使用聚类方差协方差矩阵进行线性假设有什么建议吗?
\n\n谢谢!
\n测试数据框:
> foo
x y z
1 0.191 0.324 0.620
2 0.229 0.302 0.648
3 0.191 0.351 0.626
4 0.229 0.324 0.630
5 0.152 0.374 0.656
6 0.191 0.295 0.609
7 0.229 0.267 0.665
8 0.152 0.353 0.657
9 0.152 0.355 0.655
Run Code Online (Sandbox Code Playgroud)
两个线性模型:
model1 <- lm(z~polym(x,y,degree = 1),data=foo)
model2 <- lm(z~polym(x,y,degree = 2),data=foo)
Run Code Online (Sandbox Code Playgroud)
两个模型的ANOVA返回:
> anova(model1,model2)
Analysis of Variance Table
Model 1: z ~ polym(x, y, degree = 1)
Model 2: z ~ polym(x, y, degree = 2)
Res.Df RSS …Run Code Online (Sandbox Code Playgroud) 在编码过程中,我需要更改分配给一个因子的虚拟值。但是,以下代码不起作用。有什么建议吗?
test_mx= data.frame(a= c(T,T,T,F,F,F), b= c(1,1,1,0,0,0))
test_mx
a b
1 TRUE 1
2 TRUE 1
3 TRUE 1
4 FALSE 0
5 FALSE 0
6 FALSE 0
model= glm(b ~ a, data= test_mx, family= "binomial")
summary(model)
model= glm(a ~ b, data= test_mx, family= "binomial")
summary(model)
Run Code Online (Sandbox Code Playgroud)
在这里,我将得到b的系数为47。现在,如果我交换虚拟值,则它应该为-47。然而,这种情况并非如此。
test_mx2= test_mx
contrasts(test_mx2$a)
TRUE
FALSE 0
TRUE 1
contrasts(test_mx2$a) = c(1,0)
contrasts(test_mx2$a)
[,1]
FALSE 1
TRUE 0
model= glm(a ~ b, data= test_mx2, family= "binomial")
summary(model)
Run Code Online (Sandbox Code Playgroud)
b的系数仍然相同。到底是怎么回事?谢谢。