コンピューターラボでRを教える良い方法は何ですか?


15

そこいくつかの良い質問と入門帳簿上の回答のセットとなってまたはRなど学習に近づいてきたここここ。しかし、少し異なる問題があります。コンピューターラボで1時間のセッション(またはいくつかのそのようなセッション)を実行し、Rで開始する基本的なアプローチなどに慣れる最適な方法です。

私の現在の計画は、VerzaniのSimpleRのような入門章を効果的に処理し、おなじみのデータセットを導入することですが、他の有用なアプローチはありますか?たとえば、実際のデータをすぐに紹介したり、より抽象的な方法で問題に対処したりするのは良いことでしょうか?角括弧の使用方法を徹底的に検討する必要がありますか、または格子グラフィックスの例で人々を興奮させる必要がありますか?

私のターゲットオーディエンスは、統計情報(エキスパートではありませんが)と有能なSPSSユーザーに精通しています。SPSSなどで得られるマクロやスクリプトの種類を超えるプログラミング言語に精通していない。

レッスンプランへのヒントや参照をいただければ幸いです。ただし、Rを紹介するオンライン資料の多くの優れたリストを複製したくはありません-厳密に対面の指導質問への参照です。


おそらくコミュニティwikiであるべきですよね?
ピーターエリス

1
私にはいいアイデアのように聞こえます。:)
ミシェル

1
この質問にどのように答えるべきかについて本当に重要なのは、あなたのセットアップがどうなるかです。あなたが持っている場合は、単一の「時間の長いセッション...コンピュータラボでの」があるように起こっている非常に小さなあなたが行うことができますし、非常に少数の改宗を持つことになります。あなたが「いくつかの」を持ち、彼らがすでに統計と基本的なプログラミングをかなり徹底的に知っているなら、あなたは彼らが自分で前進し、挑戦することに熱心になるようにポンプをプライムすることができますが、この後者は別のアプローチを必要とします。持つ人々のために、いくつかの統計情報とプログラミングの知識、学期の長いコースは理想的です。
GUNG -復活モニカ

うーん、良い点は@gung、わかりました、セットアップは非常に具体的です。私は彼らのマネージャーであり、彼らに何をすべきかを伝えることができます。統計スキルに関する2時間に1回のセッションがあり(数人が交代でプレゼンテーションを行います)、より実用的になり、実データを備えたマシンでラボでその多くを行うことに同意しました。したがって、実際の要件は、1つまたは2つのセッションでRを十分に理解することであり、回帰モデルのフィッティングや後続のセッションで診断プロットを見ることで、基本に完全に気を取られないようにすることです。
ピーターエリス

2
@gung徹底したコメントを得るための大きな+1。私は長い間Rを教えてきましたが、ついに同じような結論に達しました:プログラミングやコマンドラインプロンプトを軽く理解していない人は、Rに対処する際にいくつかの困難に直面する可能性が高いです。数時間でRを使用した統計...
chl

回答:


6

私は完全に異なるアプローチを主張します。Rの基本概念を紹介するビルディングブロックアプローチと、Rの驚くべき機能をユーザーに見せながらショックとa敬の念を抱くアプローチという2つの異なる観点から教えられたRチュートリアルを見てきました。何をするかについての理解が比較的少ない。後者は間違いなく生徒とより強く共鳴しますが、どちらも実際にユーザーを生産するのに非常に効果的ではないようです。

代わりに、私はSPSSで共通して比較的単純なタスクを取るだろうし、あなたの部分の猫被りの少しで、Rに変換して歩く-例えば、西安の優れたといくつかの所望の機能を調べるための提案以下??だけではなく、メモリから適切な機能を呼び出します。初心者はほぼ確実に既存のプロセスをRを学習するときに変換するので、ゼロから作成するのではありません。

良い例は、単にデータをロードし、いくつかの説明を実行し、いくつかの基本的なプロットをポップすることで構成できます。 lm()非常にシンプルであり、理解できる結果を生成し、SPSS出力と比較できるため、カバーするのも良いかもしれません。

宿題の場合は、簡単なプロセスの1つを変換したり、使い慣れたデータセットを読み込んで探索したりしてもらいます。問題がどこで起こっているかを理解するために一対一の時間を与え、次のセッションでそれらをより多くの変換例でカバーします。あなたのリストから概念は必然的に現れます(私の賭け:因子対文字ベクトル、対対)-そして、それらをカバーするための現実世界の動機があります。彼らが出てくるしていない場合は(attach)、その後、彼らは実際にはまだ必要ありませんしている-それが意味している場合、あなたの初心者は(上少し早い非慣用的なコードを書くfor代わりにapply)、私は害が表示されません。

このように、あなたの学生は外国語の学生とほぼ同じように(または少なくとも、私がしたように)進歩することができます:単純な表現の粗雑な翻訳はより複雑な表現への欲求を促し、それは文法のより深い理解への欲求を引き起こします、最終的に慣用的な表現につながります。すぐに「文法」にジャンプしないでください。また、とにかく忘れてしまう可能性があるので、質問していないことを教えることについてあまり心配しないでください。イディオム表現に関する穏やかな指針は素晴らしい(forvs apply)が、主なことは、彼らが出力を生成し、自分で探索することです。


(+1)ありがとう、マット、素晴らしいアドバイスのようですね。私は特に最後の2つの段落が好きです。
chl

マット(および他のすべての人-すべての素晴らしい助け)に感謝します。私は間違いなく使用しますか?? アプローチ、およびそれらをラボで再作成し、宿題の一般的なタスクとして他のソフトウェア(基本的にクロスタブパッケージであるSPSSおよびHarmoni)で実行します。私は彼らに物事を開いてどこから始めればよいかを知るために合理的な指示がまだ必要です(そして私はそれに応じてレッスン1の計画を修正しました)が、私は研究室の外で自己学習をやる気にさせることは間違いなく行く方法だと思います。
ピーターエリス

7

OK、これは私がこれまでのところ、人々が始めて、さらに学ぶために彼らを動機付けると思うものに関する私自身の答えです(私はSPSSからそれらを引き離そうとしています私がすることを拒否する追加のモジュールを購入することなく)。

最初のセッションの終わりに、次のことができるはずです。

基礎

  • インターフェイスを使用して簡単な計算を行います(Rを計算機として使用します)
  • スクリプトウィンドウを起動、保存、および読み込み、効率的に使用する
  • ワークスペースでオブジェクトを作成および削除します
  • どのフォルダーが作業フォルダーかを確認します
  • P:/ R / youridフォルダーの仕組みと、終了時にワークスペースを保存することの仕組みを理解する
  • XXX(一般的に使用されるデータ)を含むワークスペースの画像をロードします
  • メモリ内のオブジェクトを一覧表示する
  • データフレーム内の列(変数)の名前を一覧表示する
  • オブジェクトを画面に印刷します
  • データフレームのアタッチとデタッチ
  • オブジェクト、関数、引数(関数へ)、ワークスペース、ベクトル、データフレーム、マトリックス、数値、因子
  • 関数に関するヘルプを検索する方法を知っている
  • 使用する ??関連する機能のリストを見つける
  • より多くのリソースについては、Webおよびローカルの書籍とLANのどこにアクセスすればよいか
  • 特定の統計手法に関するラボセッションに参加するのに十分なRの基礎を理解する

データ操作

  • :演算子を使用して数値のベクトルを作成します
  • 1つの変数のカウントテーブルを作成する
  • 2つの変数のカウントのクロス集計を行います
  • さらに操作するために新しいオブジェクト(上記の表のいずれかなど)を作成します
  • 行列または表を転置する
  • tapply()を使用して係数で連続変数の平均のベクトルを作成します
  • cbind()またはdata.frame()を使用して、いくつかのベクトルをバインドします
  • []を使用して行列のサブセットを作成します
  • 対数や平方根などの単純な変換を作成します

統計

  • 2つの連続変数の相関を計算する

グラフィックス

  • 連続変数のヒストグラムを作成する
  • グラフィックスウィンドウを作成し、2つまたは4つの部分に分割します
  • 連続変数の密度線プロットを作成する
  • 2つの連続変数の散布図を作成する
  • 散布図に直線を追加します(垂直、水平、またはab)
  • 軸とタイトルのラベルを作成する

3つのセッションの終わりに、さまざまな演習を行うと、次のこともできるようになります。

基礎

  • SPSSまたは.csv形式のデータをインポートする
  • ワークスペース内のすべてのオブジェクトを削除して、新たに開始します
  • パッケージのライブラリを使用する
  • ワークスペースイメージを保存し、基本原則Rとメモリを理解する
  • ランダム変数を生成する
  • c()を使用してベクトルを作成します
  • 新しい方法とテクニックを学ぶためにどこに行くべきかについて良い感じがある

データ操作

  • 月と国ごとの訪問者到着数など、実際のデータセットでaggregate()を使用
  • ==、!=、および%in%演算子。論理ベクトル。そしてそれらを使用してデータをサブセット化する
  • ifelse()およびそれを使用して新しい変数を作成する
  • max、min、および類似の関数と、それらがベクトルでどのように機能するか
  • 多数の結果を保存するベクトルまたは行列を作成します
  • ループを使用して同様の機能を何度も繰り返す
  • apply()を使用して、行列の各列または行に関数を適用します
  • 順序付けられた因子を作成する
  • cut()を使用して数値変数を再コーディングします

統計

  • 分割表のカイ二乗検定
  • 相関の堅牢なバージョン
  • 線形モデルを2つの連続変数に適合させ、結果をオブジェクトに配置し、anova()、summary()、plot()を使用して結果を確認します
  • モデルおよびRでのモデルの動作について十分に理解し、スキルをより多くのモデルタイプに適用できるようにする
  • boot()を使用して、cor()、mean()、var()などの基本関数でブートストラップを実行します
  • 実際のデータセットでsample()を使用する

グラフィックス

  • 異なるレベルの因子が与えられた連続変数の格子密度ラインプロットを作成する
  • qqnorm
  • 異なるレベルの因子を示す異なる色と文字の点で散布図を作成します。既存の散布図に点または線を追加する
  • 凡例を追加する
  • ドットチャート
  • errbar()
  • ループを使用してページに複数のグラフを描画する

2
あなたの設定を考えると、これは理にかなっているように思えますが、初心者で1時間でカバーすることはたくさんあります。私は、自給自足を構築するために彼らが利用できる資源を常に強調します。具体的には、ヘルプファイルのインストールと使用に付属するRマニュアルをご覧ください。たとえば、相関関係を開始するには、?? correlationを使用して、リストの検索方法を示し、次に?corを使用してヘルプの読み方と理解方法を示します。ドキュメントから cor、histなどを教えます。どれだけ賢くても、たった1時間という制限があります。情報を取得してトラブルシューティングを自分で行う必要があります。
GUNG -復活モニカ

1
私はあなたから歩いて約10分働いていると思うので、コーヒーを飲みながら何かをしたいなら大声で教えてください。:)
ミシェル

私はそれが主にであるとは思わない、それは方法だ。それは生徒たちに部分的に自分で物事を学び、手元に包括的なチートシートといくつかの家庭の課題を持たせることです。
オンドレイ

@Michelle -音の良い、med.govt.nz [で] peter.ellisで私にメール
ピーター・エリス

4
これは驚くほど野心的なリストです!このすべてを3時間でカバーすることを想像することはできません。3時間でこれをすべてカバーするための言葉を話すことさえできないと思います。私が完全にスキップするいくつかの概念があります:ワークスペース(私はそれらを使用することを好みません-スクリプトからすべてを再生成することはコードをより堅牢にします)、アタッチ(また、特に環境を理解していない新しいユーザーにとって問題があります)、転置(些細なことです)必要なときに検索する)、cbind(ほとんど使用しません)。
マットパーカー

2

ピーターのリストに追加します:

  1. サブセットデータフレーム:観測によるサブセット(3以上のすべての応答など)、変数によるサブセット。
  2. ifelseステートメント(これは私にとって大きな学習曲線であり、ifステートメントのタイプを使用しようとしました)、特にネストされたifelseを使用します。
  3. aggregateコマンドを使用して、データを小さなデータフレームに要約します。
  4. ==演算子の使用方法を学習します。
  5. =ではなく<-を使用する
  6. 変数の名前を変更する
  7. SASのmax(A、B)などの基本的なベクトル化トラップは、Aがデータフレームの変数で、Bが単一の値である場合、Rでmax(A、B)が行うことは行いません。SASコード(およびおそらくSPSSコード)と同等のことを行うには、ifelseステートメントを使用します。
  8. attachの代わりにwithを使用します。:)

さらなる考え:彼らはおそらくCOMPUTEで多くを使用するSPSSので、それをどのように行うかをカバーするのはR良いでしょう。また、RECODERで変数を設定する方法。私が使用していたときSPSS、「非分析」作業のほとんどはこれら2つのコマンドを使用していたと思います。


1
pmaxをご覧ください...
エルビス

@ Xi'an、覗き見(または突く!)に行きました。ああ、私はそれをクリックしていませんでした。R-bloggerリンクを介してあなたのブログに数回行っていました。:)
ミシェル

2
カバーするときifelseは、それがどのように機能し、そのドキュメントの警告が何を意味するかを彼らに示すようにしてください。考えてみれば論理的には機能しますが、ifelse変数の型を「変更」し、多くの時間を浪費することについて、完全に混乱していることがわかりました。
ウェイン

2
@ Xi'an:Rヘルプは、「演算子=はトップレベル(コマンドプロンプトで入力された完全な式など)でのみ、または式のブレースリスト内の部分式の1つとしてのみ許可されます」と述べています。私はあなたのブログで言及されている以外の状況を考えることができますが、これまでのa <- 1:5 ; b <- 4 ; a[b = 3] ; b ; a[b <- 3] ; bところ、下付き文字は同じ結果を与えますが、b異なる(最初は変わらない、2回目は変わる)などのCっぽいものだけです。これ=は割り当てを意図したものではなく、Rをより美味しくするために変更されるべきではありませんでした。しないでください。
ウェイン

1
@Elvis +1000インターネットをご利用いただけますpmax
ミシェル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.