2012-05-01 8 views
4

例のデータを提示して始めましょう。ロジスティック回帰における因子の名前の変更

set.seed(1) 
x1=rnorm(10) 
y=as.factor(sample(c(1,0),10,replace=TRUE)) 
x2=sample(c('Young','Middle','Old'),10,replace=TRUE) 
model1 <- glm(y~as.factor(x1>=0)+as.factor(x2),binomial) 

私はsummary(model1)を入力すると、私はデータが偽物であることから
の名前を変更するにはRにおける方法はあり

Estimate Std. Error z value Pr(>|z|) 
(Intercept)    -0.1835  1.0926 -0.168 0.867 
as.factor(x1 >= 0)TRUE 0.7470  1.7287 0.432 0.666 
as.factor(x2)Old   0.7470  1.7287 0.432 0.666 
as.factor(x2)Young  18.0026 4612.2023 0.004 0.997 

が今のようなモデルの推定値を無視してください取得一番左の列に表示される見積もりがより明確に見えますか?例えば。 as.factorを削除し、因子レベルの前に_を入れます。出力は次のようにする必要があります:

   Estimate Std. Error z value Pr(>|z|) 
(Intercept)  -0.1835  1.0926 -0.168 0.867 
(x1 >= 0)_TRUE 0.7470  1.7287 0.432 0.666 
(x2)_Old   0.7470  1.7287 0.432 0.666 
(x2)_Young  18.0026 4612.2023 0.004 0.997 
+0

あなたは一般的なオブジェクトlm' '要約(G)のための印刷方法を変更する方法を探して、またはされていますこの特定の 'summary.glm'オブジェクトの' coefficients'コンポーネントの 'rownames'の名前を変更するだけですか? – BenBarnes

+4

コントラストの名前付け方法は、デフォルト(または明示的に設定された)コントラスト関数(通常は 'contr.treatment')に基づいています。名前を変更する方法については 'car :: contr.Treatment'をチェックしてください(その関数を使うか、そこにコードに従って独自の関数を作る)。 –

答えて

5

上記のコメントに加えて、もう1つの要素は、すべてのデータをデータフレームに配置し、それに応じて変数に名前を付けることです。その後、変数名はあなたの式の中に詰め込んだ大きな醜い表現から取られていません:。

library(car) 
dat <- data.frame(y = y, 
        x1 = cut(x1,breaks = c(-Inf,0,Inf),labels = c("x1 < 0","x1 >= 0"),right = FALSE), 
        x2 = as.factor(x2)) 

#To illustrate Brian's suggestion above 
options(decorate.contr.Treatment = "") 
model1 <- glm(y~x1+x2,binomial,data = dat, 
      contrasts = list(x1 = "contr.Treatment",x2 = "contr.Treatment")) 
summary(model1) 

Call: 
glm(formula = y ~ x1 + x2, family = binomial, data = dat, contrasts = list(x1 = "contr.Treatment", 
    x2 = "contr.Treatment")) 

Deviance Residuals: 
    Min  1Q Median  3Q  Max 
-1.7602 -0.8254 0.3456 0.8848 1.2563 

Coefficients: 
      Estimate Std. Error z value Pr(>|z|) 
(Intercept) -0.1835  1.0926 -0.168 0.867 
x1[x1 >= 0] 0.7470  1.7287 0.432 0.666 
x2[Old]  0.7470  1.7287 0.432 0.666 
x2[Young]  18.0026 4612.2023 0.004 0.997 
+0

@ Stat-Rパッケージ** car **をインストールしてロードしましたか? – joran

+0

ありがとう@ジョラン、それは今動作する –

1

最初の部分については、あなたがモデルに合う前に、まずあなたのデータが権利を取得します。データフレーム内の変数を収集し、処理された変数をそのデータフレームに含めると、その名前を制御できます。例:

set.seed(1) 
x1 <- rnorm(10) 
y <- as.factor(sample(c(1,0), 10, replace=TRUE)) 
x2 <- sample(c('Young', 'Middle', 'Old'), 10, replace=TRUE) 
dat <- data.frame(y = y, x1 = x1, x2 = factor(x2), 
        x1.gt.0 = factor(x1 >= 0)) 
model1 <- glm(y~ x1.gt.0 + x2, data = dat, family = binomial) 

> coef(model1) 
(Intercept) x1.gt.0TRUE  x2Old  x2Young 
-0.1835144 0.7469661 0.7469661 18.0026168 

これは、ほとんどのR関数で式インターフェイスを使用するはずです。

関連する問題