合計点で成績をつける場合の#N/Aの処理

Excelで合計点を出して,成績をつける場合に,関数でIfsを使う。例えば,

  • 90点以上はS
  • 80点以上はA
  • 70点以上はB
  • 60点以上はC
  • 60点未満はD

なので,以下の場合は問題なし。

  A B C
1 ID テストの得点 評価
2 S001 70 B
3 S002 90 S
4 S003 50 D
….    
41 S040 60 C

この場合,

  • 評価のC1は,=IFS(B2 >= 90,”S”,B2 >= 80,”A”,B2 >= 70,”B”,B2 >= 60,”C”,B2 <= 59.9,”D”)

問題になるのは,途中に#N/Aがある場合,上のようにすると,以下のように#N/Aが評価に出る。

  A B C
1 ID 合計点 評価
2 S001 #N/A #N/A
3 S002 90 S
4 S003 50 D
….    
41 S040 60 C

 

解決策としては,#N/Aはエラーの扱いなので,IfERRORでエラーが出たらDをつけるようにする。

  • 評価のC1は,=IFERROR(IFS(B2 >= 90,”S”,B2 >= 80,”A”,B2 >= 70,”B”,B2 >= 60,”C”,B2 <= 59.9,”D”),”D”)

とすると,まずは,エラーかどうかを評価し,エラー(#N/A)なら”D”を返し。そうでなければ,IFS以下の評価を返す。

 

 

Excelでクロス表から成績を決める

タイトルが良く分からない感じになりましたが,以下のように,クロス表で成績を決める場合にどうするかという話。例えば,5段階評価で,横方向と縦方向で評価の観点が異なり,それぞれの合算で成績をつけたい場合を想定しています。一番上の行(A-F)と一番右の列(1-6)は,エクセルの外枠にある記号と思ってください。

54321
555443
454432
343332
232221
111111

こちらのサイトの記事「【エクセル時短】縦横で交わるデータを取り出す!「クロス抽出」を実現する関数の組み合わせとは?」を参考というか,ほとんどそのまま使わせて頂いています。イメージとしては,以下のようになれば良い。エクセルのシートに,以下のように,A~Dは成績処理,F~Lは上のクロス表が配置されているとする。

ABCDEFGHIKL
1ID 観点1(縦) 観点2(横) 成績(縦と横) 54321
2A01555555443
3A02545454432
4A03323343332
5A04141232221
6A05513111111

上のD2に入っているのは,

=VLOOKUP(B2,$F$2:$K$6,MATCH(C2,$G$1:$L$1,0),FALSE)

vloolupは(検索値,範囲,列番号,検索の型)であり,縦に検索する値(上だとB2の5)をFの列から探し,F2~L6の四角の範囲の中で,列番号で指定された場所にあるものを完全一致(False)で取ってくる。

matchは(検索値,検索範囲,照合の種類)なので,横に検索する値(上だとC2の5)をG1~L1の範囲で探し,完全に一致するもの(照合の種類が0)を探す。返す値は,範囲の中の列番号なので,上の場合には,1(列目)を返す。

関数の中身は,vlookup(検索値(B2=5), 範囲(F2~K6), match(検索値(C2=5), 検索範囲(G1~L1), 検索の型(完全一致=0)), False(vlookupの完全に一致))となる

リッカートスケールで得たアンケート・データの視覚化:likert Package + HH package (その2)

以前のブログ記事で,likert packageを使った視覚化について書いたけれど,今度はHH packageも使う方法。データとしては以前と同じ,以下のイメージ。質問項目は,Q1からQ5まであって,例えば,1が「全く良くない」で,5が「とても良い」のような5件法だとする。データのcsvはこちら

Q1Q2Q5
145
533
….
library(HH)
library(likert)
library(plyr)
dat=read.csv("likert_test.csv", header= T) #データの読み込み
  dat2=data.frame(lapply(dat, factor, levels=1:5)) 
#datの中身をfactor(文字列)に変換。その際に,五件法なので範囲を1から5までとする。つまり,ある設問への反応として1が含まれていない場合などでも,1が0回とするための処置。その上で,データ・フレームにする
  HH::plot.likert(  #HHでPlotを出す
  likert::likert(dat2), #likert packageで集計する
  col=rev(grey(seq(0,1,0.25))), #1を白,5を黒,中間がグレーの指定。revをしているので,これを外すと5が黒,1が白。また,1から5段階なので,0.25ずつグラデーションにする。
  main ="TEST1" タイトルはTEST1とする
  )

Itemの順番がQ5からQ1になっているのが気になるのと,1が白字なので,枠線がないと見えない。これらを解消。

HH::plot.likert(
  likert::likert(dat2),
  col=rev(grey(seq(0,1,0.25))),
  main ="TEST2", 
  reverse=F,  #Itemの順番を上からQ1の順に
  border = c("#111111", "#111111", "#111111", "#111111", "#111111") #グラフの周りを黒枠で囲む
  )

グラフの中に%で数値を入れたい。

以下のFunctionはStakFlowのこちらの答えから引用し,変更したもの。グラフ内に数値%を表示する。

myPanelFunc = function(...){
  panel.likert(...)
  vals <- list(...)
  DF <- data.frame(x=vals$x, y=vals$y, groups=vals$groups)
  
  ### some convoluted calculations here...
  grps <- as.character(DF$groups)
  for(i in 1:length(origNames)){
    grps <- sub(paste0('^',origNames[i]),i,grps)
  }
  
  DF <- DF[order(DF$y,grps),]
  
  DF$correctX <- ave(DF$x,DF$y,FUN=function(x){
    x[x < 0] <- rev(cumsum(rev(x[x < 0]))) - x[x < 0]/2
    x[x > 0] <- cumsum(x[x > 0]) - x[x > 0]/2
return(x)
}) subs <- sub(' Positive ,'',DF$groups) collapse <- subs[-1] == subs[-length(subs)] & DF$y[-1] == DF$y[-length(DF$y)] DF$abs <- abs(DF$x) DF$abs[c(collapse,FALSE)] <- DF$abs[c(collapse,FALSE)] + DF$abs[c(FALSE,collapse)] DF$correctX[c(collapse,FALSE)] <- 0 DF <- DF[c(TRUE,!collapse),] DF$perc <- round(ave(DF$abs,DF$y,FUN=function(x){x/sum(x) * 100})) ### panel.text(x=DF$correctX, y=DF$y, label=paste0(DF$perc,'%'), cex=1.0,col=c("black","black","black","white","white")) } #ここは数値と%の表示色を決める。今回は白字とグレーと黒なので,それに合わせて変更している。

以下がPackageを使用したスクリプト

origNames=rownames(dat) #Functionで使うデータの定義
HH::plot.likert(
  likert::likert(dat2), 
  col=rev(grey(seq(0,1,0.25))),
  main ="TEST3", 
  reverse=F, 
  border = c("#111111", "#111111", "#111111", "#111111", "#111111"), 
 panel =myPanelFunc #上で定義したFunctionを使う。
 )

Goodwin et al. (2017). Exploring the dimensionality of morphological knowledge for adolescent readers

Goodwin, A. P., Petscher, Y., Carlisle, J. F., & Mitchell, A. M. (2017). Exploring the dimensionality of morphological knowledge for adolescent readers. Journal of Research in Reading, 40(1), 91–117. https://doi.org/10.1111/1467-9817.12064

この研究では,形態論的知識の次元性について調査をする。371人の7年生と8年生が7つの形態論的知識を問う課題を行った成績を検証的因子分析により調べた。結果として,形態論的知識を1つの全般的な因子,そして7つの特定の因子としたbifactorモデルが最も適合した。その7つの特定の因子は,課題が形態論的知識の特定の側面を切り取ったものを示している。次に,構造方程式モデルを用いて,リテラシーの結果との関連を調査した。結果として,全般的な因子と形態論的知識の意味を処理する特定の因子が読解理解と語彙と有意な正の関係を示した。また,形態論的な語を読むという特定の因子や綴りを処理するという特定の因子は,読解理解や語彙とわずかに負の関係を見せたが,形態論的に関連のある語を作り出すという特定の因子は語彙と有意な性の関係を示した。形態論的知識の複雑性に焦点を当てて分かったこととして,研究を計画したり,解釈する場合には,形態論の本質的を認識しておくことの重要性が示唆される。

[Abstract]
This study examined the dimensionality of morphological knowledge. The performance of 371 seventh- and eighth-graders on seven morphological knowledge tasks was investigated using confirmatory factor analysis. Results suggested that morphological knowledge was best fit by a bifactor model with a general factor of morphological knowledge and seven specific factors, representing tasks that tap different facets of morphological knowledge. Next, structural equation modelling was used to explore links to literacy outcomes. Results indicated the general factor and the specific factor of morphological meaning processing showed significant positive associations with reading comprehension and vocabulary. Also, the specific factor of generating morphologically related words showed significant positive associations with vocabulary, while specific factors of morphological word reading and spelling processing showed small negative relationships to reading comprehension and vocabulary. Findings highlight the complexity of morphological knowledge and suggest the importance of being cognizant of the nature of morphology when designing and interpreting studies.

Northbrook, J., & Conklin, K. (2018). Is What You Put in What You Get Out? —Textbook-derived Lexical Bundle Processing in Beginner English Learners.

Northbrook, J., & Conklin, K. (2018). Is What You Put in What You Get Out? —Textbook-derived Lexical Bundle Processing in Beginner English Learners. Applied Linguistics, 1–19. https://doi.org/10.1093/applin/amy027

Abstract

第二言語習得に対する用例基盤モデルは,学習者が受ける言語入力に非常に重きを置き,学習者が頻繁に出会う語の連続が処理の優位性をもたらすと予測する。この研究では,日本の中学で英語を学ぶ初級学習者における,Lexical bundles(語彙連結)と呼ばれる高頻度な語の連続の処理を調査する。指導教材から直接抜き出した項目で生徒を調査するために,句判断課題を用いる。生徒は,教科書に出てこないものより,出てくるLexical bundlesへより速く,より正確に反応することから,教科書での出現頻度に敏感であった。本研究では,おそらく初めて,とても習熟度が低い,中学生の初級学習者であっても指導教材から得た入力に出てくるLexical bundlesの頻度に敏感であることを示しており,この発見は,教授もしくは教材のデザインへの重要な示唆を含んでいる。

Usage-based approaches to second language acquisition put a premium on the linguistic input that learners receive and predict that any sequences of words that learners encounter frequently will experience a processing advantage. The current study explores the processing of high-frequency sequences of words known as ‘lexical bundles’ in beginner learners of English in Japanese secondary school. To do this we use a phrasal judgment task, testing students on items taken directly from their teaching materials. Students responded to lexical bundles that occurred in their textbooks significantly faster and more accurately compared with non-lexical bundles, and were sensitive to the frequency of oc- currence in their textbooks. This study shows, perhaps for the first time, that even very low-level, beginner secondary students are sensitive to the frequency of lexical bundles which appear in the input they receive from teaching materials, a finding that has important implications for teaching and material design.

 

Bb9上でテストプールを作り,そこから出題したい

タイトル通り,「Bb9上でテストプールを作り,そこから出題したい」

ネックなのは,例えば,単語問題が1000問あり,100問ずつに区切って使いたい(1週間で100語ずつ覚えさせて,20問だけランダムに出題したい)のような場合,100語に区切ったcsvを10回アップロードするのは面倒だし,ミスの基。Bb9のテストにはカテゴリーが付与できるので,それを利用したい。以下,手順。

事前準備

  1. テストフォーマットに沿ってテストを作成し,Unicodeでtxtとして保存(フォーマットについては,過去記事参照)
  2. Bb9のコースツールから「テスト/アンケート/プール」を選び,「プール」から「プールの作成」
  3. プール情報を入力し,「送信」
  4. 「質問のアップロード」で作成したテストをアップロード
  5. 完了したら,プールができるので,できたプールの名前を選択し,下矢印がでたら編集を選ぶ
  6. 1つ目の質問文(項目)を選び,下矢印がでたら編集を選ぶ
  7. 画面下部に「カテゴリー」があるので,追加を押し,カテゴリー名を適当に入れ(1週目とかW1とか),送信
  8. 続けて,カテゴリーの区切れにある項目を編集していき,カテゴリー名を入れる
  9. 終わったら,画面右下のOKを押す

ファイルのエクスポートと編集(ファイルを編集して,カテゴリー名をすべての項目につける)

  1. プールからカテゴリー名を入れたプールを選び,下矢印がでたら,エクスポートを選び,ファイルを保存する
  2. zipファイルを解凍し,展開しておく。
  3. res00001.datの編集(このファイルは,カテゴリー名をコントロールしている)
    1. 形式:<CATEGORY id=”_4桁の数字_1″><TITLE>カテゴリー名</TITLE><TYPE>category</TYPE><COURSEID value=”_4桁の数字_1″/></CATEGORY>
    2. ここで,category idを確認しておく
  4. res00003.datの編集(このファイルでカテゴリーと項目を紐づけている)
    1. このファイルには,事前に作成したカテゴリー分(例えば,今回だと10カテゴリー)の情報が入っている
    2. 形式:<ITEMCATEGORY id=”_5桁の数字_1″><CATEGORYID value=”_4桁の数字_1″/><QUESTIONID value=”_6桁の数字_1″/></ITEMCATEGORY>
    3. 以下,エクセルなどで処理する。上記のイタリック部分の数値を変更して,全項目とカテゴリーを紐づけていく
    4. 説明を簡潔にするために,後ろのQUESTIONID valueから入力する
    5. QUESTIONID valueは,項目に対応した数字が入っている。例えば,1つ目の項目(1つ目のカテゴリーの最初の項目)は,15000が入っているとすると,2つ目の項目(2つ目のカテゴリーの最初の項目)は15100となる(各カテゴリーの項目は100であると想定)。つまり,このQUESTIONID valueが項目番号となる。したががって,15000~15099はカテゴリー1,15100~15199はカテゴリー2となる。必要な分(今回は15000~16000の1000項目)の数値を作成しておく。
    6. CATEGORYID valueには,res00001.datで確認したcategory idを対応する項目分入力(今回の例なら100項目)する。15000~15099はカテゴリー1なので,同じCATEGORYID valueを入れる。
    7. ITEMCATEGORY idには,このファイル内で使われている最大値+1を入力し,全項目分の下方コピーをしていく
    8. 上記のBで示した形式でセットが完成したら,それをres0003.datの<ITEMCATEGORIES>~</ITEMCATEGORIES>の間に,上書きし,保存する。
  5. res00002.datの編集(オプションの設定)
    1. Bb9でアップロードしたテストのオプションを一括で変える」で行った設定をするのであれば,このファイルで行う。
  6. すべて保存し,これらすべての含まれるzipを作成
  7. Bb9のコースツールから「テスト/アンケート/プール」を選び,「プール」から「プールのインポート」から作成したzipをアップロードすると,プールが完成する。

テストの作成

  1. 「教材」から「テスト/アンケート/課題」をクリックし,「テスト」を選択
  2. テストの追加画面で新しいテストの作成をクリック
  3. テストの情報を入力し,「送信」
  4. 「質問の再利用」から「質問セットの作成」を選ぶと新しいウィンドウが開く
  5. 左の「プール」から作成したプールを選ぶ
  6. 左の「カテゴリー」から出題範囲を選ぶ
  7. 質問が全部表示されていないといけないので,右の一番下にある「すべての表示」を押すか,「ページングの編集」で200項目を表示させるようにする
  8. 右の「質問文の横にある」□にチェックを入れ,「送信」
  9. 「質問ごとの点数」や「表示する質問の数:」を変更して,送信
  10. 質問セットを作り終えたら,右下の「OK」を押す。
  11. テストの追加から,「既存のテストの追加」にある,今作成したテストを選択し,「送信」
  12. テスト情報を入力し,「送信」で完了

 

Li, J., Taft, M., & Xu, J. (2017). The Processing of English Derived Words by Chinese-English Bilinguals

Li, J., Taft, M., & Xu, J. (2017). The Processing of English Derived Words by Chinese-English Bilinguals. Language Learning, 67(4), 858–884.

Abstract

本研究では,中国語を第一言語とする英語バイリンガルの英語派生語構造に対する敏感さを調査した。一つ目の実験では,英語を第一言語とする実験参加者は先行刺激と目標語の関係が明白であるペア(hunter-HUNT)と曖昧であるペア(corner-CORN)でマスク・プライム効果を見せたが,形式だけが関連するペア(freezer-FREEZE)では効果は見られなかった。一方で,バイリンガルの参加者は3条件全てでプライム効果が見られた。さらに,英語の習熟度が低い参加者ではより強い形式プライムこうが見られた。2つ目の実験では,バイリンガルの参加者は,語に派生接辞ではないものを付与して作った非語(animalfil)と比べて,派生接辞に語を付与して作成した非語(animalful)を非語として認識するのがより難しく,正確性(エラー率)の点からも,英語と接する機会の少ない参加者であっても,同様だった。全体をまとめると,これらから分かるのは,中国語を第一言語とする英語バイリンガルは,習熟度に関わりなく,形態論的構造への敏感さを持ち,習熟度が高まることで,英語を第一言語とする人々と類似したパターンになってくることが分かった。

This study examined the sensitivity of Chinese-English bilinguals to derivational word structure in English. In the first experiment, English monolinguals showed masked priming effects for prime-target pairs related both transparently (e.g., hunter-HUNT) and opaquely (e.g., corner-CORN) but not for those related purely in terms of form (e.g., freeze-FREE), whereas bilinguals showed priming in all three conditions. Furthermore, stronger form priming was found for bilinguals who were less experienced in English. A second experiment showed that bilingual participants found it harder to identify items as nonwords when the words possessed a suffix (e.g., animalful) than when they did not (e.g., animalfil), and this was true in terms of accuracy even for bilinguals with less exposure to English. Overall, these findings suggest that Chinese-English bilinguals, regardless of proficiency, have some sensitivity to morphological structure and that greater proficiency leads to priming effects that tend to pattern more like those of monolinguals.

2017年のまとめ

新年も7日も過ぎて書くのはどうかと思うけれど,授業再開を前に1年を振り返るくらいはしておこう。

まずは,教育関係から。前期はスピーキングの授業でALC NetAcademyを教材にした授業をして,これは次年度以降も定番化しそう。基本的には,オンラインで学習した内容を授業内で確認することを前半にやり,授業の後半は歌を歌ったり,グループ発表の準備をしたりと言う内容。受講生の反応もなかなか良かったのだけれど,反省としては,やはり乗り切れない学生がいて,そのフォローがうまくできていないところ。あとは,事前学習の内容を応用する活動が少なかったかなと。この辺りは,タスクをもう少し入れて自由に話さざる得ない状況をどう作るかかなと。次年度以降の課題。

後期はライティングで現在進行中なので,まだ反省は早いのだけれど,採用した教材がイマイチだったかな。もちろん,こちらで工夫しなかったことも原因だけれど,ケアレスな誤りが多い教材はテンションが下がる。あと前期ほど課題に工夫がなくて,結局,教えるこちらがワクワクしない感じになっている。あと3回で盛り返しましょう。

前後期に行った新規開講科目はTOEIC受験対策の授業。当たり前だけど,カリキュラムとは授業の内容だけでなく,外部的な要因がでかいことを思い知らされた授業でした。実践の結果だけ見れば大成功。ただし,それで教員と学生がどれだけ満足感を得られたかは別の話。なにせ対策ものの授業なので,ある程度,冷徹にやらなければならないのがシンドイですね。ま,少しずつ成果発表をして行きましょう。

今年度から非常勤でやっている「英語教育リサーチメソッド」は大学院生が対象。初めてにありがちな,盛り沢山になっているけれど,後から見返せるようにはしておきたい。とはいえ,受講生がそれぞれリサーチ自体を始めないとメソッドを使うところまではいかないので,そのための準備なので総花的になるのは仕方ないかな。こちらも次年度以降は改善の余地ありまくり。

運営関係は,組織が色々と変わったので,まぁ大変。おかげさまで,教養教育の英語科目では副責任者的立ち位置に置かれて大忙しの一年でした。委員会やらWGやらが多くて,授業に影響が出るほど。それもこれも次年度から始まるターム制の準備なのだけれど,マニュアルと書類をつって,長いメールを書いたりしても,準備は進まず,終わらず。最低限の形を整えて,あとは始まってからの試行錯誤かな。ここら辺は,次年度以降,他大学からお座敷がかかりそう。ターム制準備の悲哀を語らせてくれるなら,何処へでも。

そんなこんなで研究は例年通りパッとせず。代表発表者としては2件。英語での発表が1件と日本語での発表が1件で,それぞれ研究発表と実践報告。それ以外はお得意のグループ発表。この流れはしばらく続きそうだけれど,発表件数だけもまずふやし,そして論文を書きましょう。ちなみに,今年は紀要論文が1本だけ。

お座敷は夏にLETで「英語語彙指導で考えたいこと:語彙は増やして整理する」で講師をさせていただいた。このネタも少し擦りすぎな感があるので,しばらくは語彙関連のお座敷はおやすみかな。

そんなこんなで,運営 > 授業 > 研究 の序列で進んでいるここ数年をどうにかしないといけませんね。どうしましょうかね。

リッカートスケールで得たアンケート・データの視覚化:likert package (その1)

Google formでアンケートデータを取ることが増えているので,その視覚化のための備忘録。使うパッケージはlikert
データとしては,以下のイメージ。質問項目は,Q1からQ5まであって,例えば,1が「全く良くない」で,5が「とても良い」のような5件法だとする。

Q1 Q2 Q5
1 4 5
5 3 3
….
library(likert)
library(plyr)

dat=read.csv("likert_test.csv",na.strings=c("", "NULL")) #データの読み込み。実際のデータでは,空白,つまり無回答ということもあるので,空白をNAと判定させる。
dat2 <- data.frame(lapply(dat, factor, levels=1:5)) #datの中身をfactor(文字列)に変換。その際に,五件法なので範囲を1から5までとする。つまり,ある設問への反応として1が含まれていない場合などでも,1が0回とするための処置。その上で,データ・フレームにする。
dat2 <- na.omit(dat2) #念のため,NAデータを削除

dat3 <- likert(dat2) #各設問への反応をまとめる
likert.bar.plot(dat3, #対象データファイル
        ordered=FALSE, #反応の順番。1から5の順。
        group.order=c("Q1","Q2","Q3","Q4","Q5"), #今回の場合,指定しないと反応1が少ない順に並べられる。ここでの指定では,Q1からQ5への並べる 
        plot.percent.high=FALSE,#指定しないと,高い反応(4と5)の割合(%)を表示
        plot.percent.low=FALSE, #指定しないと,低い反応(1と2)の割合(%)を表示
        plot.percent.neutral=FALSE, #指定しないと,中間の反応(3)の割合(%)を表示
        plot.percent=TRUE #指定すると,各反応の割合を表示
)
+theme_bw() #プロットの背景色などのスタイルを指定。今回は白黒。
+theme(legend.position = "bottom", #凡例をプロットの下に表示。
legend.direction = "horizontal" #水平に配置。
)

1 7 8 9 10 11 15