2016-11-15 19 views
2

ロジスティック回帰モデルを持つrdaファイルがあります。 glmで使用されている独立変数のデータ型が何であるかを知りたければ、他のものを脇に置いておくとどうすればよいでしょうか?たとえば、Y~ X1+X2+X3の場合、X1X2、およびX3のデータタイプはどのように知っていますか?この時点では、データ型を調べるデータフレームがありません。どんな助力も高く評価されます。元のデータフレームにアクセスせずに回帰モデルで変数のクラスを調べる

+0

データフレームにアクセスできないということを正確にはわかりませんが、オブジェクトのデータ型を理解する典型的な方法は、 'class()'を使うことです。たとえば 'var < - " foobar "; class(var) 'は' [1] '文字を返します。あなたはおそらくRでRdataファイルをロードする必要があるでしょうし、次に 'str()'でglmオブジェクトの内容をチェックし、 'class(glm $ X1)'のようなものを試すことができます。 – user5359531

+0

@ZheyuanLi '$ model'に依存しないことをお勧めします。関数呼び出しで' model = FALSE'が使用された場合は 'NULL'を返します。 'model.frame'(以下の私の答えを見てください)はまだ動作します。 – Benjamin

答えて

3

私は最初にもっと便利なものを提供したいと思います。 $termsをチェックするのはどうですか?あなたの質問にのみデータクラスを特定する言及しているので

## or `attr(terms(fit), "dataClasses")` 
attr(fit$terms, "dataClasses") 
#   mpg   qsec factor(am)   wt factor(gear) 
# "numeric" "numeric"  "factor" "numeric"  "factor" 

(例として、以下のfitを使用することで)、これで十分です。しかし、変数のデータにアクセスする場合は、$dataをチェックしてください。 これはglmlmと異なる方法です。 glmlmよりも多くのものを返します。これにはdata引数が含まれます。注:lmdataを返しません。 model.frame

にもう少し


ほとんどの場合、model.frameは最高の手順です。しかし、気をつけて使用してください。 is.data.frameで

dat <- mtcars 
fit <- glm(mpg ~ qsec + factor(am) + wt + factor(gear), 
      data = dat, model = FALSE) 
rm(dat) 
model.frame(fit) 

エラー(データ):オブジェクトのDAT "

これは私がOPの質問の下にコメントで説明したものですが見つかりません:$modelNULLがない場合には、 model.frameは単にそれを抽出します。しかし、実際にはNULLなら、model.frameはそれを再構築することを目指しています。しかし、それを再構築するには、元のデータフレームにアクセスする必要があります。元のデータフレームが利用できない場合、何も得られません(ただし、エラーが発生します)。これを理解するために

model.frameは(S3)一般的な関数であることに注意してください:モデルオブジェクトから

.S3methods("model.frame") 
#[1] model.frame.aovlist* model.frame.default model.frame.glm*  
#[4] model.frame.lm* 

model.frame.lmmodel.frame.glm単純抽出$model$modelが存在する場合)。それ以外の場合は、モデル式と元のデータフレームからモデルフレームを構築するためにmodel.frame.defaultを呼び出します。

+0

正当な理由があります。私は特定のシナリオに遭遇したことがなく、その結果を考えなかったようです。私はまだ 'model.frame'を主張しています。なぜなら' model = FALSE'の場合でもデータフレームへのアクセス権があるからです。 '$ model'は' NULL'を返します。この質問の文脈に違いはありませんが、それ以外の文脈では違います。 – Benjamin

+0

attr(fit $ terms、 "dataClasses")は私の直接の問題を解決しました。私は余分な説明を感謝します。それは私がいくつかの事をもっとクリアするのを助けました。 –

関連する問題