R-将列名称作为变量传递,名称包含I()

时间:2019-03-09 06:01:01

标签: r non-linear-regression coefficients hypothesis-test

我正在执行多项式回归并测试系数的线性组合。但是当我尝试测试系数的线性组合时,我遇到了一些问题。

complete

它输出以下值:

complete

然后我使用names(coef())提取系数名称

LnModel_1 <- lm(formula = PROF ~ UI_1+UI_2+I(UI_1^2)+UI_1:UI_2+I(UI_2^2)) 
summary(LnModel_1)

由于某些原因,当我使用glht()时,它在UI_2 ^ 2上给我一个错误

Call:
lm(formula = PROF ~ UI_1 + UI_2 + I(UI_1^2) + UI_1:UI_2 + I(UI_2^2))
Residuals:
 Min      1Q  Median      3Q     Max 
-3.4492 -0.5405  0.1096  0.4226  1.7346 
Coefficients:
Estimate Std. Error t value Pr(>|t|)    
(Intercept)  4.66274    0.06444  72.354  < 2e-16 ***
UI_1         0.25665    0.07009   3.662 0.000278 ***
UI_2         0.25569    0.09221   2.773 0.005775 ** 
I(UI_1^2)   -0.15168    0.04490  -3.378 0.000789 ***
I(UI_2^2)   -0.08418    0.05162  -1.631 0.103643    
UI_1:UI_2   -0.02849    0.05453  -0.522 0.601621

不知道为什么会显示此错误消息。如何将I(UI_2 ^ 2)系数输入到glht()

非常感谢您

1 个答案:

答案 0 :(得分:0)

问题似乎在于,I(UI^2)可以像在此处LnModel_1 <- lm(formula = PROF ~ UI_1+UI_2+I(UI_1^2)+UI_1:UI_2+I(UI_2^2))一样被解释为R中的表达式。

因此,您应该指示R您要在字符串中评估string

slope <- glht(LnModel_1, linfct = c("UI_2+ UI_1:UI_2*2.5+ 2*2.5*\`I(UI_2^2)\` =0
") )

检查我的示例(因为我无法重现您的问题):

library(multcomp)

cars <- copy(mtcars)
setnames(cars, "disp", "UI_2")
model <- lm(mpg~I(UI_2^2),cars)

names(coef(model))

slope <- glht(model, linfct = c("2*2.5*\`I(UI_2^2)\` =0") )