ロジスティック回帰:グループ化された変数とグループ化されていない変数(Rを使用)


9

私はA. Agresti(2007)、An Introduction to Categorical Data Analysis、2ndを読んでいます。版であり、この段落(p.106、4.2.1)を正しく理解しているかどうかはわかりません(ただし、簡単なはずです)。

前章のいびきと心疾患に関する表3.1では、254人の被験者が毎晩いびきを報告しており、そのうち30人が心疾患を患っていました。データファイルにグループ化されたバイナリデータがある場合、データファイルの行は、これらのデータをサンプルサイズ254のうち30例の心臓病として報告します。データファイルにグループ化されていないバイナリデータがある場合、データファイルの各行は、個別の主題なので、30行には心疾患の1が含まれ、224行には心疾患の0が含まれます。ML推定値とSE値は、どちらのタイプのデータファイルでも同じです。

グループ化されていないデータのセット(1つは依存、1つは独立)を変換すると、すべての情報を含めるのに「1行」以上かかることになります!?

次の例では、(非現実的な!)単純なデータセットが作成され、ロジスティック回帰モデルが構築されます。

グループ化されたデータは実際にはどのように見えますか(変数タブ?)グループ化されたデータを使用して同じモデルをどのように構築できますか?

> dat = data.frame(y=c(0,1,0,1,0), x=c(1,1,0,0,0))
> dat
  y x
1 0 1
2 1 1
3 0 0
4 1 0
5 0 0
> tab=table(dat)
> tab
   x
y   0 1
  0 2 1
  1 1 1
> mod1=glm(y~x, data=dat, family=binomial())

回答:


11

表3.1は以下のとおりです。

ここに画像の説明を入力してください

Agrestiは、いびきレベルの次の数値スコアを考慮しました:{0,2,4,5}。

GLMをRに適合させる方法は2つあります。結果は、0/1のベクトルとして、または2つのレベルの因子として、式のrhsに予測子を指定して提供されます。または、式のlhsとして、成功/失敗のカウントが2列の行列を与えることができます。後者は、Agrestiが「グループ化された」データと呼ぶものに対応します。グループ化された設定にも適用される3番目の方法は、weights=引数を使用して、分類テーブルの各カテゴリで観測された肯定的および否定的な結果の数を示すことです。

マトリックスビューのデータは次のようになります。

snoring <- matrix(c(24,35,21,30,1355,603,192,224), nc=2)

これから、次のようdata.frameに長い形式(2484行= sum(snoring)観測)でa を生成できます。

snoring.df <- data.frame(snoring=gl(4, 1, labels=c("Never", "Occasional",
                                                   "Nearly every night", 
                                                   "Every night")),
                         disease=gl(2, 4, labels=c("Yes", "No")),
                         counts=as.vector(snoring))
snoring.df <- snoring.df[rep(seq_len(nrow(snoring.df)), snoring.df$counts), 1:2]

また、次の2つのモデルは同じ結果になります。

levels(snoring.df$snoring) <- c(0, 2, 4, 5)
y <- abs(as.numeric(snoring.df$disease)-2)
x <- as.numeric(as.character(snoring.df$snoring))
fit.glm1 <- glm(y ~ x, family=binomial)

fit.glm2 <- glm(snoring ~ c(0, 2, 4, 5), family=binomial)

ロジット[π^バツ]=3.87+0.40バツ

2番目の表記は、のような命令を含む集計テーブルで頻繁に使用されますcbind(a, b)。ここでa、およびbは、バイナリイベントのカウントの列です(たとえば、一般化線形モデルを参照)。(例のように)マトリックスの代わりにテーブルを使用する場合にも機能するようです。たとえば、

glm(as.table(snoring) ~ c(0, 2, 4, 5), family=binomial)

どうもありがとうございました!完璧な答えです!単純な追加が1つあります。as.table(snoring)の代わりに、私の例と同等の方法としてtable(x、y、dnn = c( 'snoring'、 'disease'))をお勧めします。データも興味深いものでした。
FloE、2012年

1
@FloEその通りです。それでもrhs アドホックを構築する必要があります。たとえば、次のようなものtab <- table(x,y, dnn=c('snoring','disease')); glm(tab ~ as.numeric(rownames(tab)), family=binomial)が機能します(「Yes」は1ではなく0とコーディングされているため、係数の符号が逆になります)。
chl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.