1

これはstats.stackexchangeからの再投稿で、満足のいく応答が得られませんでした。私は2つのデータセットを持っています。1つ目は学校に関するもので、2つ目は標準化されたテストに失敗した各学校の生徒をリストしています(意図的に強調)。偽のデータセットは次の方法で生成できます(Tharenのおかげで):

#random school data for 30 schools
schools.num = 30
schools.data = data.frame(school_id=seq(1,schools.num)
                         ,tot_white=sample(100:300,schools.num,TRUE)
                         ,tot_black=sample(100:300,schools.num,TRUE)
                         ,tot_asian=sample(100:300,schools.num,TRUE)
                         ,school_rev=sample(4e6:6e6,schools.num,TRUE)
                         )

#total students in each school
schools.data$tot_students = schools.data$tot_white + schools.data$tot_black + schools.data$tot_asian
#sum of all students all schools
tot_students = sum(schools.data$tot_white, schools.data$tot_black, schools.data$tot_asian)
#generate some random failing students
fail.num = as.integer(tot_students * 0.05)

students = data.frame(student_id=sample(seq(1:tot_students), fail.num, FALSE)
                      ,school_id=sample(1:schools.num, fail.num, TRUE)
                      ,race=sample(c('white', 'black', 'asian'), fail.num, TRUE)
                      )

P(Fail = 1 | Student Race、School Revenue)を推定しようとしています。学生のデータセットで多項離散選択モデルを実行すると、明らかにP(Race | Fail = 1)を推定することになります。私は明らかにこれの逆を見積もる必要があります。すべての情報が2つのデータセット(P(Fail)、P(Race)、Revenue)で利用できるため、これができない理由はわかりません。しかし、私は実際にRで実装する方法について困惑しています。どんなポインタでも大歓迎です。ありがとう。

4

2 に答える 2

0

すべての学生に関する情報を含むデータセットが必要です。どちらも不合格、合格。

schools.num = 30
schools.data = data.frame(school_id=seq(1,schools.num)
                          ,tot_white=sample(100:300,schools.num,TRUE)
                          ,tot_black=sample(100:300,schools.num,TRUE)
                          ,tot_asian=sample(100:300,schools.num,TRUE)
                          ,school_rev=sample(4e6:6e6,schools.num,TRUE)
                          )

library(plyr)
fail_ratio <- 0.05
dataset <- ddply(schools.data, .(school_id, school_rev), function(x){
  data.frame(Fail = rbinom(sum(x$tot_white, x$tot_asian, x$tot_black), size = 1, prob = fail_ratio), Race = c(rep("white", x$tot_white), rep("asian", x$tot_asian), rep("black", x$tot_black)))
})
dataset$Race <- factor(dataset$Race)

次に、頻繁なアプローチのために lme4 パッケージに glmer() を使用できます。

library(lme4)
glmer(Fail ~ school_rev + Race + (1|school_id), data = dataset, family = binomial)

ベイズ推定が必要な場合は、MCMCglmm パッケージをご覧ください。

于 2012-02-24T08:38:07.607 に答える