1

私はこのglm関数を使用して回帰分析を行ってきましたが、非常にうまく機能しています。私が回帰したいことのいくつかには、大量の回帰要因が含まれているのではないかと思っています。主な質問が 2 つあります。

  1. リグレッサーにテキスト ベクトルを与えることは可能ですか?
  2. のp値部分をsummary(glm)ソートできますか? できれば、各リグレッサーの p 値によって。

元。

A # sample data frame
names(A)
[1] Dog Cat Human Limbs Tail Height Weight Teeth.Count
a = names(A)[4:7]
glm( Dog ~ a, data = A, family = "binomial")
4

2 に答える 2

4

最初の質問については、 を参照してくださいas.formula。基本的に、次のことを行います。

x <- names(A)[4:7]
regressors <- paste(x,collapse=" + ")
form <- as.formula(c("Dog ~ ",regressors))
glm(form, data = A, family = "binomial")

モデルに交互作用項が必要な場合は、さまざまなcollapse=引数を使用して構造をやや複雑にする必要があります。その引数は、ベクトルの要素間に配置されるシンボルを指定します。たとえば、"*"上記のコードで指定すると、考えられるすべての相互作用を含む飽和モデルが作成されます。すべてではなく一部の相互作用のみが必要な場合は、最初にすべての相互作用を含む数式の一部を作成し (「*」を折りたたみ引数として使用)、次に別の貼り付け関数に残りの項を追加します (「+」を使用)。 " を折りたたみ引数として)。全体として、数式と同じ文字列を作成し、それを数式クラスに変換する必要があります。

2 番目の質問では、summary の出力を並べ替え可能なデータ構造に変換する必要があります。たとえば、データ フレームです。glm モデルの名前が次のようであるとしましょうmodel:

library(plyr)
coef <- summary(model)[12]
coef.sort <- as.data.frame(coef)
names(coef.sort) <- c("Estimate","SE","Tval","Pval")
arrange(coef.sort,Pval)

の結果をarrange()変数に代入し、好きなように続けます。

于 2013-07-05T07:53:14.580 に答える
4

データ フレームの例:

set.seed(42)
A <- data.frame(Dog = sample(0:1, 100, TRUE), b = rnorm(100), c = rnorm(100))
a <- names(A)[2:3]

まず、文字ベクトルaを使用して、次のモデル式を作成できますreformulate

glm(Dog ~ a, data = A, family = "binomial")

form <- reformulate(a, "Dog")
# Dog ~ b + c

model <- glm(form, data = A, family = "binomial")

次に、これはモデルの要約を p 値でソートする方法です。

modcoef <- summary(model)[["coefficients"]]

modcoef[order(modcoef[ , 4]), ]         

#                Estimate Std. Error    z value  Pr(>|z|)
# b            0.23902684  0.2212345  1.0804232 0.2799538
# (Intercept)  0.20855908  0.2025642  1.0295951 0.3032001
# c           -0.09287769  0.2191231 -0.4238608 0.6716673
于 2013-07-05T07:59:29.640 に答える