RからローカルLLMをつかう

伊東宏樹

2025-11-15

この発表の内容

  • ローカルLLMをOllamaを経由して、Rから使う
    • Rでは、ellmerパッケージを使用

ローカルLLM

  • 自分のコンピューターで動く大規模言語モデル (LLM: Large Language Model)
    • ネットにつながらなくても使える
    • データが外部に送信されない
      • 機密情報も扱える
    • 無料で使えるものも多い

Ollama

  • ローカルLLMを管理・実行するためのツール
  • https://ollama.com/
  • Ollamaから使えるローカルLLM
    • llama
    • gemma
    • gpt-oss
    • その他多数

Ollamaのインストール

  • インストーラーをダウンロードして、インストール

  • Dockerイメージもあり

ローカルLLMのダウンロード

例: コマンドラインからgemma3nを取得

ollama pull gemma3n

Rからollamarパッケージを使う場合

> ollamar::pull("gemma3n")

ellmerパッケージ

> install.packages("ellmer")

ellmerからローカルLLMを使う

チャットの設定

> library(ellmer)
> chat <- chat_ollama(model = "gemma3n")

実行例

> chat$chat("Rで分散分析をおこなう関数を教えて")
Rで分散分析(ANOVA)を行うための主な関数は以下の通りです。

**1. `aov()` 関数:**

*   最も基本的な分散分析を行う関数です。
*   モデルの定義に使用します。
*   結果は、`summary()` 関数で詳細な統計量を得ることができます。

```R
# 例:単純な分散分析
data(airblue) # サンプルデータセットの読み込み
model <- aov(flight ~ dest, data = airblue) # モデルの定義
summary(model) # 結果の表示
```

**2. `lm()` 関数:**

*   線形モデルを構築する関数ですが、分散分析も行えます。
*   `aov()` と同様に、モデルの定義に使用します。
*   `summary()` 関数で結果を表示します。
*   `lm()` は、`aov()` よりも柔軟なモデル構築が可能です。

```R
# 例:lm()関数を使った分散分析
model <- lm(flight ~ dest, data = airblue)
summary(model)
```

**3. `disp()` 関数:**

*   分散分析の結果をまとめて表示する関数です。
*   `aov()` または `lm()` で作成したモデルの結果を入力として受け取ります。
*   F統計量、自由度、p値など、分散分析に必要な統計量を一覧で表示します。

```R
# 例:disp()関数を使った分散分析の結果表示
summary(model) # aov()またはlm()の結果をsummary()に渡す
disp(model)
```

**4. `car` パッケージ:**

*   分散分析や多重比較のための便利な関数を提供します。
*   `anova()` 関数は、分散分析の結果をより詳細に表示します。
*   `plot()` 関数は、残差分析のためのプロットを作成します。

```R
# carパッケージのインストール (まだインストールしていない場合)
install.packages("car")

# carパッケージの利用例
library(car)
anova(model) # 分散分析の結果を詳細に表示
plot(model)  # 残差分析のためのプロットを作成
```

**5. `stats` パッケージ:**

*   Rの標準パッケージに含まれる統計関数が含まれています。
*   `anova()` 関数は、分散分析の結果を簡単に表示します。

```R
# 例:statsパッケージのanova()関数を使った分散分析
anova(model)
```

**使い分けのポイント:**

*   **`aov()`:**  基本的な分散分析を行う場合に適しています。
*   **`lm()`:** より複雑なモデルを構築したい場合に適しています。
*   **`disp()`:** 分散分析の結果をまとめて表示したい場合に適しています。
*   **`car` パッケージ:** 分散分析の結果を詳細に表示したり、残差分析を行ったりする場合に便利です。
*   **`stats` パッケージ:** 簡単な分散分析の結果をすぐに確認したい場合に適しています。

**どの関数を使うべきか:**

通常は、`aov()` または `lm()` を使ってモデルを定義し、`summary()` で結果を確認します。  
より詳細な結果や残差分析を行いたい場合は、`car` パッケージの `anova()` や `plot()` 関数を使用すると便利です。

**注意点:**

*   分散分析を行う前に、データの仮定(等分散性、正規性など)が満たされていることを確認する必要があります。
*   多重比較を行う場合は、適切な多重比較法(Tukey法、Bonferroni法など)を使用する必要があります。

**補足:**

これらの関数は、Rの基本的な統計解析機能を理解するために重要です。それぞれの関数の詳細な使い方やオプションについては、Rの公式ドキュメントやオンラインのチュートリアルを参照してください。

*   [Rの公式ドキュメント - aov(): analysis of 
variance](https://cran.r-project.org/doc/manuals/r-release/stats.html#aov)
*   [Rの公式ドキュメント - lm(): linear 
models](https://cran.r-project.org/doc/manuals/r-release/stats.html#lm)
*   [car パッケージ](https://www.stats.ox.ac.uk/car/)

ご希望に応じて、特定のデータセットを使った具体的なコード例や、特定の分析方法についての説明も可能です。

まとめ

RからローカルLLMを使用する方法

  • Ollama

    • 別にインストール

    • 使用するローカルLLMを取得しておく

  • ellmerパッケージ

    • chat_ollama関数を使用

      • model引数に、使用するモデルを指定