AMA {lazy.dnc}R Documentation

加算モデルによる分析 Additive Model Analysis (暫定版)

Description

加算モデルによる分析 Additive Model Analysis (暫定版)

Usage

AMA(
  Test = NULL,
  AncTest = NULL,
  Appl = NULL,
  YearAD = 2021,
  YearJ = NULL,
  minnobs = 1,
  omit13 = 0,
  scaleA = 1,
  print = 1,
  outfile = NULL,
  ScoreOLD = NULL
)

Arguments

Test

選択科目名のベクトル。

AncTest

アンカーテスト名のベクトル、または NULL 。

Appl

志願者マスターデータフレーム

YearAD

西暦。

YearJ

(未使用)

minnobs

分析とする集団の最少人数。

omit13

= 1 にすると1科目のみまたは3科目以上選択している集団を除く。

scaleA

= 0 にするとアンカーテストを 100 点満点に換算しない。

print

= 3 にすると統計量の詳細を出力

outfile

要約を出力するテキストファイル名
NULL の場合は出力しない。 NA の場合はデフォールトのファイル名となる。

ScoreOLD

(未使用)

Details

Appl で指定される志願者マスターデータフレームは、
  "S1MKUBN", "S1CODE", "S1SCORE"
等のカラム名(変数名)を持っていること。 そのため、csv で提供される志願者マスターを読み込んだ際には convert_colnames 関数を利用してカラム名を変更する必要がある。 (Examples セクションを参照のこと。)

Test は 全角文字で以下の選択科目のテスト名を指定する。 ただし、教科を跨いだ科目の指定は出来ない。

  物理、化学、生物、地学
  日本史、世界史、地理
  倫理、政経、現社、倫政
 

AncTest全角文字で以下のアンカー科目のテスト名を指定する。 アンカー科目を利用しない場合は NULL とする。

   国語、数学1、数学2、英語R、英語L 
 

なお、出力結果には、選択科目集団の名前はこれらの漢字のテスト名を用いて、 各テストの名前はこれらの漢字に対応する以下のローマ字のテスト名で表示される。

  物理 Phys、化学 Chem、生物 Bio、地学 EarthS
  日本史 JapanH、世界史 WorldH、地理 Geo
  倫理 Ethics、政経 PolEco、現社 ModSoc、倫政 EthPol
   国語 JPN、数学1 MATH1、数学2 MATH2、英語R ENG-R、英語L ENG-L 
 

minnobsomit13 に関しては Examples セクションを参照のこと。 なお、minnobs が大きすぎる場合には、分析から除外される選択科目集団が 多くなり、その結果、デザイン行列の階数が列数を下回ることになる場合が生じる。 その場合には
"*** Insufficient Data to estimate the parameters. ***"
と表示されるので、アンカー科目の利用が必須となる。

出力結果
出力の最後の方に出る以下のものが主要結果となる。

パラメタの推定値       線型モデルのパラメタの推定値
集団の学力の推定値     weighted の列が alpha パラメタ
テストの易しさの推定値 zero-sum が beta パラメタ

選択科目の平均点      この部分に観測得点とモデルの予測値の平均点が出ている。
最大得点差            dif が最大得点差、pair がそれを観測したテスト対名

上記の imputed の値が加算モデルによる補完後のテストの最大難易度差の推定値 となっている。

上記の要約が作業ディレクトリ に outfile という名称の テキストファイルとして出力される。
outfile=NA の場合のファイル名は

  ローマ字教科名 和暦(西暦) yyyy-mm-dd_hh_mm_ss.txt
  

となる。 outfile=NULL の場合はテキストファイルは出力されない。

Value

以下の統計量からなるリスト(現在整理中)

 $ YearJ      : chr 和暦(ローマ字)
 $ YearAD     : num 西暦
 $ Kyoka      : chr 教科名(ローマ字)
 $ KyokaJ     : chr 教科名(漢字)
 $ Test       : chr 選択科目名(漢字)
 $ AncTest    : chr アンカー科目名(漢字)
 $ minnobs    : num 
 $ omit13     : num 
 $ scaleA     : num 
 $ nG0        : int 全集団数
 $ nT0        : int 全テスト数
 $ nG2        : int 分析に用いられた集団数
 $ nT2        : int 分析に用いられた選択科目数
 $ nA         : int アンカー科目数
 $ nrowX      : int ディザイン行列の列数
 $ GroupName  : chr 集団名(漢字)
 $ TestName   : chr 選択科目名(ローマ字)
 $ AncTestName: chr アンカー科目名(漢字)
 $ nparam     : num モデルのパラメタの数
 $ rank       : int ディザイン行列の階数
 $ nfree      : num nrowX-nparam
 $ np2        : num 各集団の受験者数
 $ betahat    : num モデルのパラメタの推定値 (non-fullrank model)
 $ b          : num モデルのパラメタの推定値 (zero-sum)
 $ testdif    : num テストの易しさ (zero-sum beta)
 $ groupablty : Named num 集団の学力 (zero-sum alpha)
 $ groupabltyw: Named num 集団の学力 (重み付き alpha)
 $ muw        : num 補完済平均点を計算するための定数
 $ obs_mean   : Named num 観測された平均点
 $ imp_mean   : Named num 補完済み平均点
 $ maxdifm    : Named num 最大平均点差
 $ locmaxdifm : Named chr 最大平均点差が生じる科目対
 $ msp        : num 選択科目の統計量
 $ np         : num 選択科目の受験者数
 $ meanp      : num 選択科目群ごとの平均点
 $ stdp       : num 選択科目群ごとの標準偏差
 $ mspA       : num アンカー科目の統計量
 $ meanpA     : num 選択科目群ごとのアンカー科目の平均点
 $ stdpA      : num 選択科目群ごとのアンカー科目の標準偏差
 $ npA        : num 選択科目群ごとのアンカー科目の受験者数
 $ Cmat0      : num 素点間の積率相関係数
 $ CmatP      : num 平均点間の積率相関係数
 $ CmatS      : num 平均点間のスピアマンの順位相関係数
 $ CmatK      : num 平均点間のケンドールの順位相関係数
 $ npAll*     : num 分析で用いられる選択科目群の人数
 $ meanspAll* : num 分析で用いられる選択科目群のごとの平均点
 $ X          : num ディザイン行列 X
 $ y          : num 基準変数 y (群ごとの各選択科目の平均点)
 $ nobs       : num 各群の人数
 $ yhat       : num モデルの予測値
 $ maxady     : num データとモデルの予測値の差の絶対値の最大値
 $ rmse       : num データとモデルの予測値の差の RMSE
 $ rmsew      : num データとモデルの予測値の差の重み付き RMSE
 $ alphasumw  : num 重み付き alpha の推定値
 $ alphasum   : num zero-sum alpha の和 (=0)
 $ betasum    : num zero-sum beta の和 (=0)
 $ maxadbb    : num zero-sum と non-fullrank を用いた場合の予測値の差 (=0)
 $ maxadbb2   : num zero-sum と 重み付き alpha を用いた場合の予測値の差 (=0)

上記のうち、* が付いたものが加算モデルへの入力データとなっている。
meanspAll から、説明変数行列 X と基準変数ベクトル y を定義し、 npALL を重みとして最小2乗解を算出しているが、その、一般逆行列を用いた解が betahat、それに zero-sum の制約を入れたものが b である。

References

前川眞一 (2019) 加算モデルを用いた 選択科目における集団の学力と試験の難易度の分離 大学入試センター 研究開発部リサーチノート RN-20-06.

前川眞一 (2020) 成績データから見たセンター試験
大学入試センター 「センター試験」をふり返る 第2部 論考4
https://www.dnc.ac.jp/research/nyugakusha_chyosasitsu/houkoku.html

Examples


# 必要なパッケージの読み込み
library(lazy.dnc)
 # library(lazy.mat)
 # library(lazy.tools)

#
# 圧縮されたテストデータ FakeShiganm_UTF8.zip の読み込み。
# lazy.dnc パッケージをインストールすると 
#  system.file( "FakeShiganm_UTF8.zip", package="lazy.dnc" )
# が作られる。
# この中には UTF-8 でコーディングされた FakeShiganm_UTF8.csv が入っている。
# 以下のコードは、この .zip ファイルを直接 read.csv で読み込むためのもの。
# 
# 実際の利用場面では、圧縮されていない Shift-JISのファイルを
# 読み込む事になると思われるが、その場合は以下のようにすること:
# 
# con <- file( "eex_shiganmR6A.csv", encoding="SJIS" ) 
# appl <- read.csv( con, stringsAsFactors=0, header=TRUE )
# 
appl <- read.csv( 
           unz( system.file( "FakeShiganm_UTF8.zip", package="lazy.dnc" )
         , "FakeShiganm_UTF8.csv" )
         , stringsAsFactors=0, header=TRUE )


# データフレームのカラム名の変更
# 以下の共通フォーマット志願者マスターのカラム名を用いる。
# 
cnameORG <- colnames(appl)
appl <- convert_colnames(appl)

# 必要とあれば KEY を付加する。
appl$KEY <- paste(appl$TestSite, appl$ID, sep="")


# 西暦の指定。
YearAD <- 2024


# 理科の 3 科目の分析:アンカーテスト無し。
Test <- c("物理", "化学", "生物")
AncTest <- NULL
res_Rika3_0 <- AMA( Test, AncTest, appl, YearAD )

# 理科の 3 科目の分析:アンカーテストは、国語、英語R、数学1
Test <- c("物理", "化学", "生物")
AncTest <- c("国語", "英語R","数学1")
res_Rika3_0A <- AMA( Test, AncTest, appl, YearAD )

# 理科の 3 科目の分析:アンカーテスト無し、2科目選択者のみ
Test <- c("物理", "化学", "生物")
AncTest <- NULL
res_Rika3_2 <- AMA( Test, AncTest, appl, YearAD, omit13=1 )

# 理科の 3 科目の分析:アンカーテストは、国語、英語R、数学1、
# 2科目選択者のみ
Test <- c("物理", "化学", "生物")
AncTest <- c("国語", "英語R","数学1")
res_Rika3_2A <- AMA( Test, AncTest, appl, YearAD, omit13=1 )


# 理科の 4 科目の分析
Test <- c("物理", "化学", "生物", "地学")
AncTest <- NULL
res_Rika4_0 <- AMA( Test, AncTest, appl, YearAD )



# 地歴の 3 科目の分析;アンカーテスト無し
Test <- c("日本史", "世界史", "地理")
AncTest <- NULL
res_Chireki_0 <- AMA( Test, AncTest, appl, YearAD )

# 地歴の 3 科目の分析;アンカーテスト有り
Test <- c("日本史", "世界史", "地理")
AncTest <- c("国語", "英語R","数学1")
res_Chireki_0A <- AMA( Test, AncTest, appl, YearAD )



# 公民の 3 科目の分析:アンカーテスト無し
Test <- c("現社", "倫理", "政経")
AncTest <- NULL
res_Komin_0 <- AMA( Test, AncTest, appl, YearAD )

# 公民の 3 科目の分析:アンカーテスト無し、30 人以下の集団は除く。
Test <- c("現社", "倫理", "政経")
AncTest <- NULL
res_Komin_1 <- AMA( Test, AncTest, appl, YearAD, minnobs=30 )

# 公民の 3 科目の分析:アンカーテスト有り
Test <- c("現社", "倫理", "政経")
AncTest <- c("国語", "英語R","数学1")
res_Komin_0A <- AMA( Test, AncTest, appl, YearAD )


# 公民の 4 科目の分析:アンカーテスト無し
Test <- c("現社", "倫理", "政経","倫政")
AncTest <- NULL
res_Komin4_0 <- AMA( Test, AncTest, appl, YearAD )


 

[Package lazy.dnc version 0.0.1 ]