7

最近、STATA から R に変更したばかりで、R に相当する STATA コマンドxtlogit,fe or repredict. 次のシナリオを調整するために、いくつかの支援をお願いできますか:

  data <- read.table("http://people.stern.nyu.edu/wgreene/Econometrics/healthcare.csv",header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE)

   require(caret) # for confusionMatrix

   #### subset into test & train according to the panel nature (split  individuals rather then observations)
   nID <- length(unique(data$id))
   p = 0.50# partition

   inTrain <- sample(unique(data$id), round(nID * p), replace=FALSE)

   training <- data[data$id %in% inTrain, ] 

   testing <- data[!data$id %in% inTrain, ] 


   pooled <- glm(WORKING~WHITEC+FEMALE+BLUEC+HHNINC+AGE+AGESQ+EDUC+DOCVIS,data=training, family=binomial(link="logit"))

   prediction.working= round(predict(pooled,newdata=testing,type="response"))

   confusionMatrix(prediction.working,testing$WORKING) # Accuracy between both

さらに、変量効果と固定効果に対してこれらの手順を実行したいと思います。だから私は最初にランダム効果を試しましたが失敗しました:

   library(glmmML)
   RE <- glmmML(WORKING~WHITEC+FEMALE+BLUEC+HHNINC+AGE+AGESQ+EDUC+DOCVIS, family=binomial(link="logit"), data=training, cluster=id, method="ghq", n.points=12)



    prediction.working= round(predict(RE,newdata=testing,type="response"))

しかし、それはうまくいかないようです。glmこの機能を使用するために変量効果と固定効果についてモデルを調整する方法を教えてくださいpredict

4

1 に答える 1

4

Rへようこそ。私はSTATAの改宗者でもあります。

これは難しい問題ですが、その答えは理解するために不可欠です。predict関数が glmmML で機能しない理由を理解するには、S3 メソッドを理解する必要があります ( http://adv-r.had.co.nz/OO-essentials.htmlを参照)。

少し説明させてください。Rはオブジェクト指向言語です。これは、R のすべてがオブジェクト (つまり、ベクトル、関数、data.frame) であることを意味します。各オブジェクトには属性が含まれています。属性は、基本的にオブジェクト自体に関するメタデータです。たとえば、data.frame 内の変数の名前は属性です。すべてのオブジェクトが持つ 1 つの属性は、クラスです。任意のオブジェクトのクラスを表示するには、class()関数を呼び出すだけです。

すべてではありませんが、多くの関数が S3 メソッドを使用します。predict関数は、これらの関数の 1 つです。つまり、 を呼び出すpredictと、predict関数はオブジェクトのクラスを調べます。次に、クラスの選択に応じて、他の予測関数を使用する必要があります。たとえば、オブジェクトが classlmの場合、予測関数は関数を呼び出しpredict.lmます。その他のpredict関数には、クラスのpredict.glmオブジェクト、クラスのオブジェクト、クラスのオブジェクトなどがあります (完全なリストを表示するには、ヘルプを参照してください)。残念ながら機能はありません。したがって、クラスのオブジェクトで関数を呼び出すと、エラーが発生します。glmpredict.loessloesspredict.nlsnlspredictpredict.glmmMLpredictglmmML

id <- factor(rep(1:20, rep(5, 20)))
y <- rbinom(100, prob = rep(runif(20), rep(5, 20)), size = 1)
x <- rnorm(100)
dat <- data.frame(y = y, x = x, id = id)
fit.2 <- glmmML(y ~ x, data = dat, cluster = id)
predict(fit.2)
Error in UseMethod("predict") : 
  no applicable method for 'predict' applied to an object of class "glmmML"
class(fit.2)
 [1] "glmmML"

エラーは非常に有益です。基本的には R が S3 メソッドを使用しようとしたことを示していますが、「predict.glmmML」はありませんでした

mclogituser227710 が提案する機能についてはどうですか。どれどれ

data(Transport)

fit <- mclogit(
  cbind(resp,suburb)~distance+cost,
  data=Transport
)

class(fit)
[1] "mclogit" "lm"

のクラスfitmclogitlmです。predictうまくいきますか?はい!関数を呼び出すとpredict(fit)、最初に存在しない が検索されます。次に を探します。これは存在します。predictpredict.mclogitpredict.lm

于 2015-07-08T21:45:24.360 に答える