2016-08-04 5 views
1

私は、Raschモデルを推定するためにeRmパッケージを使用しています。 RM()関数は、summary()関数を使用して集計できるRaschモデルを返します。しかし、結果を格納しようとすると、Rは空のオブジェクトを作成します。eRmモデルの概要を保存することはできますか?

library(eRm) 
my_data <- matrix(sample(0:1, 100, replace = TRUE), nrow = 10) 

my_model <- RM(X = my_data) 
summary(my_model) 
my_summary <- summary(my_model) 

なぜこの操作は機能しませんが、リニアモデルの要約を保存すると機能しますか? eRmモデルの概要を保存する別の方法はありますか?

+1

おそらく '要約(my_model)の結果は、'これができない、単にprint文であります救われる。 'RM(X = my_data)'がRM型のオブジェクトを生成するならば、 'summary.RM'のコードを見るかもしれません。 – lmo

答えて

3

@Imoが推測しているように、summary.eRmは、オブジェクトを返すのではなく、コンソールに出力するだけです。 getAnywhere(summary.eRm)を実行すると、summary.eRmのコードを調べることができます。 summaryは「汎用」関数です。つまり、関数が呼び出されたときに呼び出される「メソッド」に依存します。

lmモデルオブジェクトの場合、summary(my_model)と入力すると、summary.lm関数が送出されます。しかし、summary(my_model)と入力し、がeRmオブジェクトの場合は、summary.eRmメソッドが送出されます。 summary.lmはオブジェクトを返しますが、summary.eRmはコンソールに出力します。 methods(summary)を実行して、さまざまなタイプのオブジェクトに対してディスパッチされるさまざまなサマリー関数を確認します。

回避策は、モデルオブジェクト自体を使用して独自のサマリーオブジェクト(またはそのようなオブジェクトを作成する関数)を作成することです。 str(my_model)を使用してモデルオブジェクトのコンポーネントを検査することができます。また、summary.eRmのコードを見て、コンソールに印刷する各コンポーネントをどこに取得しているかを確認することもできます。ここで

は要約関数を作成するsummary.eRmからコードを持ち上げ、簡単な例です:

RMsmry = function(obj) { 

    cols = c("Estimate", "Std. Error", "lower CI", "upper CI") 

    # Create difficulty summary 
    ci = confint(obj, "eta") 
    tbl1 = as.data.frame(cbind(round(obj$etapar, 3), 
          round(obj$se.eta, 3), round(ci, 3))) 
    names(tbl1) = cols 

    # Create easiness summary 
    ci <- confint(obj, "beta") 
    tbl2 = as.data.frame(cbind(round(obj$betapar, 3), 
          round(obj$se.beta, 3), round(ci, 3))) 
    names(tbl2) = cols 

    return(list(Difficulty=tbl1, Easiness=tbl2)) 
} 

my_summary = RMsmry(my_model) 
my_summary 
$Difficulty 
    Estimate Std. Error lower CI upper CI 
I2 -1.191  0.658 -2.480 0.098 
I3 -1.191  0.658 -2.480 0.098 
I4  0.078  0.627 -1.150 1.306 
I5 -0.750  0.623 -1.971 0.471 
I6  0.078  0.627 -1.150 1.306 
I7  1.079  0.748 -0.386 2.544 
I8 -0.339  0.614 -1.543 0.865 
I9  0.078  0.627 -1.150 1.306 
I10 1.079  0.748 -0.386 2.544 

$Easiness 
     Estimate Std. Error lower CI upper CI 
beta I1 -1.079  0.748 -2.544 0.386 
beta I2  1.191  0.658 -0.098 2.480 
beta I3  1.191  0.658 -0.098 2.480 
beta I4 -0.078  0.627 -1.306 1.150 
beta I5  0.750  0.623 -0.471 1.971 
beta I6 -0.078  0.627 -1.306 1.150 
beta I7 -1.079  0.748 -2.544 0.386 
beta I8  0.339  0.614 -0.865 1.543 
beta I9 -0.078  0.627 -1.306 1.150 
beta I10 -1.079  0.748 -2.544 0.386 
関連する問題