2017-03-29 1 views
0

私はRでロジスティック回帰をしています。私は、統計情報とRの理解が不足している可能性があります。現在の出力のp値に基づいてモデルを縮小することに関する質問。以前のモデル出力に基づいてRのglmモデルを再設定する

Iが与えられたコマンドである:

model = glm(col1 ~ 1+(col2+col3+col4+col5+col6+col7)^2, family=binomial, data=ds) 
summary(model) 

列は最初

col1   0.2824 
col2   0.3457 
col3   0.7845 
col4   0.1451 
col5horrible  0.0541* 
col5bad   0.5641 
col5excellent  0.2354 
col6a   0.0025** 
col6b   0.6245 
col7TRUE  0.4145 
col1:col2  0.0124* 
col1:col3  0.8401 
col1:col4  0.3154 
col1:col5horrible 0.0054** 
col1:col5bad  0.2149 
col1:col5excellent 0.0035** 
col1:col6a  0.2487 
col1:col6b  0.0354* 
col1:col7TRUE  0.5647 

col1 has values of 0 and 1 
col2 is an integer 
col3 is an integer 
col4 is an integer 
col5 has values of horrible, bad, good, excellent 
col6 has values of a, b, c 
col7 has values of true and false 

係数およびp値出力のセグメントを以下のデータが含まれています私が気づいたことは、col5、col6、col7の場合、出力はcol1、col2、 col3、col4ですが、ColnameValueです。私が気付いたのは、値が列名に追加されている列に対して、すべての可能な値が列名に追加されているわけではありませんでしたが、col5、col6、およびcol7のそれぞれに1つの値がありませんでした。 GLM機能では〜1であるものを

  1. を理解するための

    質問?私は1つ前に使用されているので、それを読む方法がわからない。

  2. なぜサマリー出力の列名に列の値が追加されますか?
  3. なぜ列名にいくつかの値が追加されている列名に追加できない列の可能な値はすべてありますか?

コードの質問

私はそれがより良い装着することができるかどうかを確認するためにモデルを減らしたいです。提案は、特定のp値以上の予測変数を現在のモデルから削除することでした。ここまでは私がこれまで行ってきたことですが、列名があれば、次にColnameValueを持つ列をモデルに入れる方法については、何をすべきか分かりません。

p=coef(summary(model))[,4] 
colnames=names(p[p<0.1]) 
colnames 

COLNAMES出力

"col5horrible" 
"col6a" 
"col1:col5horrible" 
"col1:col5excellent" 
"col1:col6b" 

私の次のステップであるか、またはこれを行うには良い方法はありますでしょうか?値が列名に追加されるという事実をどうすれば処理できますか?私はダミー変数を作成するためのいくつかの方法がありました。このpostでR.にダミー変数を見上げ下回っschalangeによって投稿回答に基づいて

EDIT

。非数値列の場合:col5、col6、col7はすべて事前定義された値のセットを持っていますが、createDummyFeatures関数を実行してp値が< 0.1で元のモデルから出てきた列に対してglmを実行しました。これは係数のp値に基づいて元のモデルを減らす正しいアプローチですか?

install.packages("mlr") 
library(mlr) 

ds<-createDummyFeatures(ds, cols = "col5") 
ds<-createDummyFeatures(ds, cols = "col6") 
ds<-createDummyFeatures(ds, cols = "col7") 

model2 = glm(col1 ~ 1+(col5.horrible + col6.a +col5.excellent + col6.b)) 
summary(model2) 

答えて

0

まず、モデルを推定する前に、変数が実際に何を意味しているかを確認する必要があります。 Rは、変数の係数を推定しようとします。これは、列の「値」が「ひどい」ときには難しいことです。だから、Rは何をしているのですか(それは賢明なことです)、それらの列、5,6,7を因子/ダミー変数として扱います。 (あなたには、たくさんの情報があります) 基本的な考え方は、たとえばTrueとFalseは異なるデータグループです。 Rはあなたが言及したすべてのグループの傍受に相当するものを推定します。ただし、これは各列のk-1カテゴリでのみ行うことができます。これはTRUEの値を持つようになりますが、FALSE(Googleダミートラップ)ではありません。私はグループの性質についての詳細はないので、私は間違いなく確信することはできませんが、ごくまれにしか、あなたは他の2人を残さずにHORRIBLEを維持することはできません。彼らを価値観ではなく、グループや名前と考えてください。

最後にもう1つ重要なことは、モデルの方が適切である(R^2が高いということを意味していることを意味します)、変数を減らすことはできません。あなたのモデルはあまり正確ではない。しかし、一定の閾値を下回っているものが重要な決定要因であり、真の効果があることが比較的確実であるため、改善することができます。インターネットは、あなたがp値をintepretするのに役立つたくさんのものを提供します。

+0

私は専門用語を十分に知らず、有用な検索が得られなかったため、グーグルにいくつかの追加用語を付けていただきありがとうございます。私はダミートラップを見ていきます。ロジスティック回帰とRの出力を素人の言葉で説明できる良いリソースを見つけようとしているので、何かが役に立ちます。データセットの観点から、HORRIBLE BAD GOODとEXCELLENTは製品のランキングであり、col6値は製品のタイプです。それはモデルのより良いフィッティングについての有用な情報であり、私の理解ははずれていました。 –

+0

割り当てについては、元のモデルと比較するために縮小バージョンを行う必要があり、元のモデルのp値に基づいて変数を減らすことが提案されていました。あなたの解説は、Rが非数値データをどのように解釈するのか分かりません。特定のp値の下にある係数だけをどのように活用するかに関する提案はありますか? –

関連する問題