как удалить factornames в сводке регрессии с помощью R - PullRequest
0 голосов
/ 04 мая 2011

Интересно, как удалить factornames в сводке.Например, у меня есть фактор пола с единицами (M, W).Когда я распечатываю сводку, имя переменной выглядит так:

genderM

Но то, что я хотел бы видеть, это просто

M

Можно ли с помощью команды R избавиться отФакторные имена при вычислении резюме линейной модели?

Ответы [ 2 ]

3 голосов
/ 04 мая 2011

Вы можете прислушаться к очень разумному совету @Joris Meys.(На самом деле, я предлагаю вам это сделать.) Или вы можете использовать хитрый маленький обходной путь с небольшим количеством regex и capture.output:

# Set up data and fit model
ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2,10,20, labels=c("Ctl","Trt"))
weight <- c(ctl, trt)
fit <- lm(weight ~ group)

Теперь для манипуляции:

  1. захватите результаты summary.lm, используя capture.output
  2. , используйте gsub, чтобы заменить каждое вхождение ваших факторных уровней

Код:

# Capture output
sfit <- capture.output(print(summary(fit)))

gsub("groupTrt", "Trt     ", sfit)

Результаты:

 [1] ""                                                               
 [2] "Call:"                                                          
 [3] "lm(formula = weight ~ group)"                                   
 [4] ""                                                               
 [5] "Residuals:"                                                     
 [6] "    Min      1Q  Median      3Q     Max "                       
 [7] "-1.0710 -0.4938  0.0685  0.2462  1.3690 "                       
 [8] ""                                                               
 [9] "Coefficients:"                                                  
[10] "            Estimate Std. Error t value Pr(>|t|)    "           
[11] "(Intercept)   5.0320     0.2202  22.850 9.55e-15 ***"           
[12] "Trt          -0.3710     0.3114  -1.191    0.249    "           
[13] "---"                                                            
[14] "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 "
[15] ""                                                               
[16] "Residual standard error: 0.6964 on 18 degrees of freedom"       
[17] "Multiple R-squared: 0.07308,\tAdjusted R-squared: 0.02158 "      
[18] "F-statistic: 1.419 on 1 and 18 DF,  p-value: 0.249 "            
[19] ""                    
0 голосов
/ 04 мая 2011

Это также работает (на примере Андри):

outp <- summary(fit)
attr(outp$coefficients, "dimnames")[[1]][2] <- levels(group)[2]
outp

Результат:

> outp

Call:
lm(formula = weight ~ group)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.0710 -0.4938  0.0685  0.2462  1.3690 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   5.0320     0.2202  22.850 9.55e-15 ***
Trt          -0.3710     0.3114  -1.191    0.249    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.6964 on 18 degrees of freedom
Multiple R-squared: 0.07308,    Adjusted R-squared: 0.02158 
F-statistic: 1.419 on 1 and 18 DF,  p-value: 0.249 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...