R - Передать имена столбцов как переменные, имена которых содержат I () - PullRequest
1 голос
/ 09 марта 2019

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

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

Выводит следующие значения:

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

Затем я использую имена (coef ()) для извлечения имен коэффициентов

names(coef(LnModel_1))
output:
[1] "(Intercept)" "UI_1"        "UI_2"        "I(UI_1^2)" 
"I(UI_2^2)""UI_1:UI_2" 

. По некоторым причинам, когда я использую glht (), он выдает ошибку на UI_2 ^ 2

slope <- glht(LnModel_1, linfct = c("UI_2+ UI_1:UI_2*2.5+ 2*2.5*I(UI_2^2) =0
") )
Output:
Error: multcomp:::expression2coef::walkCode::eval: within ‘UI_2^2’, the term
‘UI_2’ must not denote an effect. Apart from that, the term must evaluate to
a real valued constant

Незнаю, почему это даст мне это сообщение об ошибке.Как ввести коэффициент I (UI_2 ^ 2) в glht ()

Большое спасибо

1 Ответ

0 голосов
/ 09 марта 2019

Кажется, проблема в том, что I(UI^2) можно интерпретировать как выражение в R так же, как здесь LnModel_1 <- lm(formula = PROF ~ UI_1+UI_2+I(UI_1^2)+UI_1:UI_2+I(UI_2^2))

Следовательно, вы должны указать 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") )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...