高齢者の学び直し(金いらずの実践編)--- PythonとSymPyをRStudioで少し勉強

 

筆者は実用というよりは趣味のレベルであるがR言語とRStudioを使って統計処理の簡単なプログラムを書くことがある。

RStudioとは

自動車に例えればプログラミング言語Rはエンジン、RStudioはダッシュボードと運転席のようなものである。
RStudioは4つの画面(ペイン、pane)に分かれプログラムを作成するときにはRスクリプトを書くソースペインを使う。ソースペインの下にコマンドの実行結果を表示するコンソール(Console)がある。作ったプログラムを実行させると、時々ここにエラーメッセージが出てしまう。
この時 エラーメッセージにどの様に対応すべきか考え込むことも多かった。2~3週間試行錯誤することもあった。しかし、最近はAIとの対話により数時間以内に解決することが多くなった。 AIが普及し始めてからコーディングの仕方も大きく変わってきた。 RStudioはCopilotと連係しているのでさらに便利になった。

RStudioとGitHubアカウントの連係

RStudio user guideに書かれているようにRStudioのTools>Global Options->左下のCopilot からGiHubアカウントでサイン・インする。もしGitHubアカウントを持っていない場合はGitHubのサイトで無料でアカウントを作成できる。
GitHubアカウンでサイン・インすると認証コードが表示されるので所定の個所にそのコード書き込むとそのPCは認証される。ここで手抜きしてコピペすると認証されない。一文字一文字打ち込む必要がある。

Copilotと連係してコード作成

Copilotが有効化されているとプログラムを書き始めると影法師のように薄い色の文字(ghost text)が表示されコードの作成を先読みしてコードの提案をしてくれる。Copilotの提案が気に入ればTabキーを押すと確定した文字に変わり、そのままコードとして使えるのでプログラムが作成しやすくなった。チャット機能は備えていないがコメント行に#for loopを使わない方法は などと打ち込むと色々な提案をしてくれることが多い。時々ソースペイン画面の下部にCopilot No completions available ど表示されていることがあるが、aとかbといった文字を打ち込むと作動し始める。

Pythonを少し学ぶ

Pythonは AIとケミストリーが合うと聞いたので第二外国語のような感覚で 少し学びたいと思っていた。
 AIと対話するときには一寸したことを聞くだけならプロンプトで十分だが少し複雑な話しは構造化した文章で前提条件を明確にして伝える必要がある。前提が曖昧だとAIが暗黙の前提を推測するため誤差が生じやすい。Python のような言語でワークフローを記述して曖昧性を少なくするとAIが誤解しにくい 利点がある。PythonはAIとの協働に必要な言語の1つだろう。

このPythonはRstudioで使えると聞き、早速、試してみた。面白いことにCopilotにMicrosoft Store版のPythonでよいかと聞いたらPython(python.org)を推奨してくれた。技術的な理由をたくさん挙げてくれたが、とりあえず Python3.14.3を公式日本語サイトからダウンロードしてインストールしRstudio2026.01.1で使ってみた。
RstudioではTools>Global Options->左中ごろのPythonをクリックするとPython interpreterの選択・指定がきるが自動的に検索して設定してくれた。
RStudioではRの場合と同様にスクリプトを書くソースペインを使う。
Pythonを使う場合にはfile>New File>Python Script
でPythonのスクリプト ペイン画面になり自由に書きこめる。ここにネットで見付けた入門教材を使って、見よう見まねで打ち込んで試行錯誤しながら楽しんでいる。Rの場合と同様にCopilotと連係しているのでゴーストテキストが表れて先読みし先導してくれる。もちろんプログラマーを目指しているわけではないので構造化思考を少しでも体得したいと思っている。 

 

PythonのSymPyライブラリーを使ってみる

PythonのSymPyライブラリーを使うと数式処理をする数学ソフトと同様のことができるので便利である。SymPyについては専門のサイトで詳しく語られているがMAXIMAのような数学ソフトと同じような使い方ができる。

筆者の場合はRStudioでPythonのSymPyライブラリーを使える環境を整えるには少し手間取った。

RStudioのRのスクリプト画面でlibrary(reticulate) を読込み、sympyをインストールし、その環境を強制的に指定する。

筆者の場合は最初に

library(reticulate)
#1. RStudio用の仮想環境に sympy を強制インストール
py_install("sympy")
# 2. インストールした環境を強制的に指定
use_virtualenv("r-reticulate", required = TRUE)

で環境の設定ができた。
py_install は、R言語のパッケージ「reticulate」を使って、R環境内からPythonのライブラリをインストールする際に使用される関数である。

Rstudio>global options>python の設定でvirtual environments のpython.exe が選択されていることを確認する。

ここで一旦、RStudioを再起動する。

次に、RStudioのPythonのスクリプト画面で


 from sympy import symbols, Function, rsolve, cos, atan, sqrt

と打ち込んでから関数を定義したり、他の数学ソフトと同様の使い方ができた。Copilotも機能していた。

PC環境やソフトのバージョンなどが異なると、うまく機能しないかもしれないがAIに聞くなどして工夫して自分のPCに合う使用環境が整えられると思う。

 

SymPyで差分方程式を解く

エンダース(Enders)の時系列分析に出てくる差分方程式を例にして解いてみる。

 

>>> from sympy import symbols, Function, rsolve, cos, atan, sqrt
>>> 
>>> # 変数と関数の定義
>>> t = symbols('t', integer=True)
>>> y = Function('y')
>>> 
>>> # 差分方程式の定義
>>> f = y(t) - 1.6*y(t-1) + 0.9*y(t-2)
>>> 
>>> # 差分方程式を解く
>>> sol = rsolve(f, y(t))
>>> 
>>> print(sol)
C0*(0.8 - 0.509901951359278*I)**t + C1*(0.8 + 0.509901951359278*I)**t
>>> 

これは数学ソフトMAXIMAによる解と実質的に一致している。下記のようにMAXIMAでは有理数を使った分数の平方根表示で解が出てくる。

差分方程式の解
 MAXIMAで上記のy(t)に(t=0,50)を与えてグラフを描かすと奇麗な波動グラフだ表れる。複素数が含まれている式なのに計算結果は実数が出てくる。

 グラフ

 これは三角関数の加法定理や倍角公式、ドモアブル定理などを使って式を変形すると共役複素数の解を導き、その和を求めると複素数が消去されてcos() コサインの実関数に変形できる。エンダースのテキストではこの導出過程が詳しく説明されているが、数学ソフトではcos()の解を表示してくれない。AIに一発でcos()の型の解を導く方法はないか聞いたが、今のところは、人間の手作業で式を整理して面倒な作業をしてコサインの式を導かざるを得ないようである。
 単純な2階の差分方程式であるが、その解は多くの示唆に富んでいる。上記の式の解の複素数の絶対値は1より小さいのでコサインの波動が時間とともに小さくなり収束していく。絶対値が1より多ければ波動か発散していく。株式相場でいえば大荒れの相場が収束していく様や、小さな振幅がやがて大荒れ相場になる様を表現できている。

 

 

 

 

 

 

 

 

 

 

 

 

高齢者の学び(金いらずの実践編)--- CNN10で英語のヒアリングとスクリプト(transcript)作成

 

 

 

 

戻る