R初心者向けのアイテム分析


12

20項目のマルチプル選択テストを評価しようとしています。この例で見られるようなアイテム分析を実行したいと思います。したがって、質問ごとに、P値、合計との相関、および選択したオプションの分布が必要です。

さまざまな統計ソフトウェアパッケージについては何も知りませんが、プログラミングに慣れており、Rはオープンソースであるため、Rを使用したいと思います。私が想定している擬似ワークフローは次のとおりです。

  1. Excelでデータを準備し、CSVにエクスポートする

  2. Rにデータをロードする

  3. 必要なことを行うパッケージをロードする

  4. そのパッケージのコマンドを実行する

  5. エクスポートとレポート。

私は1と2には自信がありますが、おそらくCRANで閲覧したパッケージを比較する統計用語がないので、3には問題があります。 ltm適切なパッケージになりそうですが、私にはわかりません。どのパッケージを使用しても、コマンドはどうなりますか?

サイドの質問:リンクされた例では、MCとMIは何を表していると思いますか?

回答:


11

:私はあなたにこれらのタスクを実行できるように、少なくとも二つのパッケージ提案することができサイケscore.items)とLTMdescript)を。CTTのパッケージには、MCQを処理するためにも思えるが、私はそれで経験がありません。詳細については、W RevelleのWebサイトThe Personality Projectをご覧ください。Rを使用したサイコメトリックス専用のページ。データのインポート、分析、レポートの詳細な手順を提供します。また、サイコメトリックスのCRANタスクビューには、多くの追加リソースが含まれています。

リンクで説明されているように、MCは「正しい回答でアイテムに回答した人の平均合計スコア」を表し、MIは「正しい回答でアイテムに回答しなかった人の平均合計スコア」を表します。また、ltmパッケージ内でポイント-バイシリアル相関(R(IT))も利用できます(biserial.cor)。これは基本的にアイテムの識別力の指標であり(アイテムと合計スコアの相関関係であるため)、2-PL IRTモデルの識別パラメーターまたは因子分析の因子負荷に関連しています。

表示するテーブルを本当に再現したい場合は、少なくとも同じ種類のテーブルを出力するために、このコードの一部をカスタムコードでラップする必要があると思います。私はあなたのテーブルを再現する迅速で汚い例を作りました:

dat <- replicate(10, sample(LETTERS[1:4], 100, rep=TRUE))
dat[3,2] <- dat[67,5] <- NA
itan(dat)

         P      R    MC    MI NC OMIT  A  B  C  D
 [1,] 0.23 -0.222 2.870 2.169 23    0 23 22 32 23
 [2,] 0.32 -0.378 3.062 1.985 32    1 32 20 14 33
 [3,] 0.18 -0.197 2.889 2.207 18    0 18 33 22 27
 [4,] 0.33 -0.467 3.212 1.896 33    0 33 18 29 20
 [5,] 0.27 -0.355 3.111 2.056 27    1 27 23 23 26
 [6,] 0.17 -0.269 3.118 2.169 17    0 17 25 25 33
 [7,] 0.21 -0.260 3.000 2.152 21    0 21 24 25 30
 [8,] 0.24 -0.337 3.125 2.079 24    0 24 32 22 22
 [9,] 0.13 -0.218 3.077 2.218 13    0 13 29 33 25
[10,] 0.25 -0.379 3.200 2.040 25    0 25 25 31 19

これらはランダムな応答なので、バイシリアル相関とアイテムの難易度はあまり意味がありません(データが本当にランダムであることを確認する場合を除きます:)。また、R関数を10 'で作成したため、エラーの可能性をチェックする価値があります。


1
これをありがとう!私はあなたのコードを読んでいるので、R構文をたくさん理解するのに役立ちます。私に問題を与えているものの1つはline freq.resp <- raw.resp/apply(raw.resp, 1, sum, na.rm=T)です。エラーは、dim(raw.resp)がNULLのときに「dim(X)には正の長さが必要」ということです。データには正の頻度のオプションがすべてないため、テーブルの長さがすべて同じではない可能性がありますか?table呼び出しでゼロを埋めるにはどうすればよいですか?
マシューレインガン

@Matthewはい、これが実際に問題の原因である可能性が非常に高いです(まあ、あなたはRをすぐに学んでいます、私は感謝しています)。そのため、1つ以上のアイテムで1つの応答カテゴリが観察されない場合、テーブルの長さは4未満になりfreq.resp、エラーがスローされます。(明日までに)コードを修正します。これは、不規則なテーブルを小さなコードで連結する方法も示します。
chl

@Matthew修正を追加しました。二分したアイテムでも動作するはずです。これで問題ないかどうか教えてください。gist.github.com/642219
chl

私の手を握ってくれてありがとう。あなたの関数は私にエラーを与えます: "raw.resp [i、names(tmp)]のエラー<-tmp:範囲外の添字"、しかし奇妙なことに、問題なく関数の各行を実行できました。だから、私は作業レポートを持っています。
マシューレインガン

私はこのコードを適用してきましたが、行Rのすべての符号(ポイントの双シリアル相関)が反転する可能性があると思います。
user1205901-モニカの復元

8

psychパッケージ関数alphaは、探しているものを生成します。

これをエクスポートするには、オブジェクトを保存し、xtable関数を使用してLaTeXマークアップを作成し、任意のLaTeXエディターでフォーマットできます。


1
(+1)psych::alphaは、score.itemsを追加してくれてありがとう 使用すべきものを覚えていない!
chl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.