2021年3月31日水曜日

HP PrimeのCASでお遊び

HP PrimeのCASは「XCAS」を使っているそうで、独自スクリプトのほかに、python文法に準じたスクリプトを実行できる、との事。
そこで、簡単なスクリプトを作成してみましたヨ。

参考にしたのは、つぎのTweet。

cf. https://twitter.com/RR_Inyo/status/1217489174128758784

少々古いものですが、色々と研究して、どうにか再現できた次第。

使い方

1. HP Primeのプログラム・エディタで、適当な名前でファイルを作成します。この時、CASのチェックボックスにチェックを入れるのを忘れずに。
2. プログラムを実行します。しかし、この時点では、何も実行されません。
3. CASを呼び出し、iter_cos(20) と入力して実行します。

コード解説

HP PrimeのXCASではPPLのグラフィクス命令が使えるので、こんなコードが動くのですネ。
また、XCASのコードなので、頭と尻に#CAS, #END というタグが付いておりますが、同時に、ファイル名として準備されるスクリプトヘッダは、必要無さそうな感じなので削除しております。
スクリプトを自動実行できない所はありますが、グラフィクスのコードも動くので、そこそこ楽しめそうです。


コード

#cas

def iter_cos(n):
  width = 320
  height = 240
  for k in range(height):
    for j in range(width):
      x = j/width*10.0-5.0
      y = 5.0-k/height*10.0
      z = x+y*i
      l = 0
      while l<n and abs(z)<50:
        z = COS(z)
        l=l+1
      col = rgb(l/20*255,0,0)
      PIXON_P(j, k, col)
  WAIT

#end

2021年3月4日木曜日

fx-CG50で「2週遅れのバレンタインデー」

先日のハートカーブのグラフィクスを、量販店に行った折に、店頭のfx-CG50でやってみました。
しかし、グラフ機能で描こうとしても、なかなか思うように行きませんネ、コマッタ。

こうした際には、pythonでプログラムを書け、となりそうですが、店頭の試用機のOSは更新されていないので、python 使えません。「バカ、スクリプトを書くヤツがいるか。pythonは最後の武器だ」

そこでグラフ機能で描く方法を模索した所、ようやく描くことが出来たのでした。

標準のグラフ機能で、Functionを描画形式として行うと、うまく行かない。何故か ?
Function形式では、x軸の増分が1ドットおきに固定されているからです。
しかし、件のハートカーブ式では、1ドットよりも細かい増分で描かないと「塗りつぶし」が現れない。

この限界を突破するには、裏技っぽいですが、FunctionではなくParametric 形式で表示を行います。
Parametric形式で描図を行うと、媒介変数 T の変域と増分が指定できます。

ハートカーブの場合、(4-x^2)^0.01 という項がある事から、-2〜+2の範囲を越えると実数ではなくなるので、グラフに表示できなくなる事が予想されます。

そのため、{ T | -2<=T<=2 } で描いてやれば、ハートカーブが現れるでしょう。
また、媒介変数 T の増分は自由に設定できますが、余り小さいと、その分、計算に時間が掛かります。
店頭で試した際は、0.0025 (2.5E-3) で試した所、十分な図形が得られました。

画像が掲載できませんが、fx-CG50をお持ちの向きはお試し戴き度。

2021年2月27日土曜日

2週間遅れの「バレンタインデー」



先日、こんな情報をみたのでした。

https://twitter.com/NumWorks/status/1360951932970409987

話によると、つぎの様な数式でグラフが描けるのだとか。

  (sqrt(cos(x))*cos(400*x)+sqrt (abs(x))-0.4)*(4-x*x)^0.1

cf. Google ‘Heart Graph’: Geeky Surprise Will Bring You Joy On Valentine’s Day (PICTURES, VIDEO)
https://www.huffpost.com/entry/google-heart-graph-valentines-day_n_1276391

で、HP Primeシミュレータでやってみましたよ、久しぶりに !


そこそこの絵が出て来ます。一部、塗りつぶしがうまく行かないのですが、ズームで細部を確認戴くと、理由が判るものと思います。

数式の (4-x*x)^0.1 の部分から、値域 {x | -2 < x < 2} で実数値になりますネ。
また、cos(400*x) の部分で塗りつぶしを実現している様です。

しかし、よくもまぁ、こんな数式があるもんです。驚いちゃったよ。


2021年1月10日日曜日

虚礼廃止 2021

2020年は、新型感染症が猛威をふるう、災厄の歳となってしまいました。
一方、電卓の方面では、fx-CG50のmicro pythonがバージョンアップするなど、ささやかながらも喜ばしい話題もありました。

2021年は、出来ますれば喜ばしい歳となりますよう。

実は、この話題を準備しているのは、2020年末の事であります。

先日、CASIOが「特定業務向け専用電卓」という電卓をリリースしました。
特定業務向けのアプリケーションが盛り付けられた電卓です。

興味深いのは、ベースとなる機体が共通している感じで、適用業務アプリケーションを盛り付けてカスタマイズできる、そういう共通基盤製品なのではないか、と思われる所です。

目下、ソリューションとしては、3つの業務向けアプリケーションが提供されているのみですが、大きな可能性を秘めているのではないか、と、少し期待しております。

CASIOは「余り計算電卓」を世に問うております。
これなどは、運輸業務の会社から「余り計算が簡単に出来る電卓を発注したい」という相談があって、数量が足りないため無理と判断したとの話から、余り計算電卓という需要があると判断、専用製品を開発した、という事です。
そして、余り計算電卓は、様々な分野で利用される所となり、隠れたヒット商品となったのですが、今般の特定業務向け専用電卓は、余り計算電卓をよりカスタマイズ出来るよう計画されたものなのではないか、と。

専用業務電卓のプラットフォームを準備し、業務向けカスタマイズ、という商売を目指しているのではないか ?
なかなか面白そうです。

そういや、以前のCASIO関数電卓には、電気計算特化型製品がありました。
コイルやコンデンサなどのキーがあって、インピーダンス計算を効率良く出来たらしい。面白そうです。
しかし、今日の関数電卓は複素数の計算能が準備されているものが多く、インピーダンス計算などもある程度出来てしまう。

驚いてしまったのが、fx-CG50の行列計算機能です。複素数行列が平気で扱えるのですね。簡単な回路網ならば、インピーダンス計算も十分こなしてくれそうです。

さて、micro pythonって事でいうと、Numworks電卓が猛威を振るっております。Numworks電卓も、なかなか興味深いものです。
Numworks電卓は、ファームウェアからオープンソースとなっていて、既に電卓OSを置換するなどの試みもあります。中身をいじくり回したい人には「垂涎のおもちゃ」として注目されているようです。

当方、一頃はHP50Gのシリアルとかに外部センサー機器を取り付け、データセンシング/プロセシングなどが出来ると面白かろう、などと夢想しましたが、Numworks電卓ならば、そうした応用も十分に可能なのかも知れません。
一方、昨今はArduinoやRaspberry Pi, micro:bitなどのマイクロコンピュータボードが安価に普及しつつあり、センサー接続からプロセシングまで、十分に行える様になっております。
高機能電卓としては、ハードウェアの拡張とセンシングデータ処理などの領域までカバーする必要は無くなってしまった。
そのため、TI電卓もシステム・ハッカブルではなくなったのかも知れない。

高機能電卓の発展の余地は狭まった、のですが、であればこそ、本来の「計算業務」を、より進めて行くのが「本道」なのかも知れません。

そんな思いで、最近は電卓で何が計算できるのか、その研究を地道にしているのであります。
「原点に還る時期」なのかも知れません。

2020年8月25日火曜日

「ヨシッ、解った !?」検査の確率 - 夏休み「明け」の自由研究

残暑厳しい折、お見舞い申し上げます。

自由研究のネタ探しに来られたお子さん、今年の夏休みはコロナウィルス感染症蔓延のため、早々にお休みとなって、夏休み本番はかなり短いものとなってしまった様です。

有名どころお医者さんを中心に、コロナウィルス感染のPCR検査は不要という論調でありますが、その辺りを深く考えるため、PCR検査などの検査について、少し調べてみました。

PCR検査などには、「感度」、「特異度」というパラメタがあるらしい。

+ 「感度」  実際に感染している人の検出の率 (a としておきます)
+ 「特異度」感染していない人の検出の率 (b としておきます)

感度は、実際に感染している人が10人いたとして、その内、どれだけの人が「感染している」事を検出できるか、という割合なんだそうです。
例えば、感度が70%とすると、10人の感染者の内、70% = 7人しか検査で検出できない、ということです。
これは、10人の感染者がいた場合、感度 70% では、3人の取りこぼしがある勘定です。この取りこぼしの事を「偽陰性」と言い、偽陰性の割合は「偽陰性率」ですから、

  感度 + 偽陰性率 = 100 %

になります。

特異度は、感染していない人の内、どれだけの人が「感染していない」事を検出できるか、という割合だそうです。
特異度が90%とすると、10人の感染していない人の内、検査によって感染していないと検出できる人は、90% = 9人、となります。
特異度90%ならば、10人の内、1人が「取りこぼし」となり、その取りこぼしの人は、実際には感染していない(陰性)にも関わらず、検査では陽性=「偽陽性」となってしまいます。

  特異度 + 偽陽性率 = 100 %

感度、特異度、などと書いていると、キーを打つ回数が増えてしまうので、ここからは感度の代わりに a 、特異度の代わりに b と書きます。また、パーセント表記は、これも混乱しやすいので、100 % を 1 とした表記で進めていきます。

  感度  (a) + 偽陰性率 = 1
  特異度 (b) + 偽陽性率 = 1

  偽陰性率 = 1 - 感度  (a) = 1 - a
  偽陽性率 = 1 - 特異度 (b) = 1 - b

となります。

ここまでが、検査についての予備知識です。
今般、流行しているコロナウィルス感染症ですが、感染の割合が、よく判っておりません。
そこで、取り敢えず、感染している人の割合を、0.1 % としておきます。

この割合で言えば、例えば、10000人ならば、感染者は10人くらいになります。感染していない人は、10000-10 = 9990 人です。

この10000人に対して、感度 a = 0.7, 特異度 b = 0.9 の検査を行うと、

感染者 10 人 :
  検査陽性 = 10 * 0.7 = 7 人、  検査陰性 = 10 * 0.3 = 3 人

非感染者 9990 人 :
  検査陽性 = 9990 * 0.10 = 999 人、 検査陰性 = 9990 * 0.90 = 8991 人

となるのだそうです。

実際に感染していない人でも、検査で「陽性」となってしまう人が999人も出てしまう、PCR検査はむやみに行うべきではない、というのが、有名なお医者さんの意見だそうです。

有名どころのお医者さんの説明は、つぎのサイト様の記事で、色々と紹介されております。

cf. ベイズの定理を悪用し、コロナウイルスPCR検査の有用性を否定する医師達 - 臨床獣医師の立場から
https://tatsuharug.com/abuse-bayes?fbclid=IwAR0WTAjomzGlZWvilmT_XalTqlNNlJ3Y4R-nPJKu7-LFvl9sdXEFNUiRcn4#i-8

上記の記事によりますと、有名どころのお医者さんの多くは「PCR検査の特異度は、90%、99% にとどまる」としているのだそうですが、
記事を書かれている方は、「PCR検査の特異度は、(90%、99% ではなく) 99.99 % 以上」と述べておられます。

素人目には、99%も99.99%も、違いがある様には思えないのですが、果たして、実態はどうなのか ?

非感染者で検査陽性となる人については、つぎの計算式で計算できます。

  (非感染、検査陽性数) = N*(1-p)*(1-b)

  N ; 検査総数
  p ; 感染者の存在確率
  b ; 検査「特異度」

感染者の存在確率、特異度が低いと、 この値は大きくなります。
そして、特異度の値の代わりに「偽陽性率」(= 1-b)でみると、より判りやすい。

+ 特異度 b = 0.90 (90 %) ならば、偽陽性率 1-b = 0.10
+ 特異度 b = 0.99 (99 %) ならば、偽陽性率 1-b = 0.01
+ 特異度 b = 0.999 (99.9 %) ならば、偽陽性率 1-b = 0.001

特異度の精度が向上するだけで、偽陽性率が劇的に下がります。
偽陽性率が劇的に下がれば、偽陽性者の数は十分下がり、有名どころのお医者さんが言っている「検査大パニック」は起こらない。
上記のサイト様では、この事を丁寧に述べております。

PCR検査、今は検査数が大分増えてきて、感染者も多く確認出来ております。
しかしながら、PCR検査、多くの場合「自費」で行うらしく、健康保険も使えないので、かなりの額を自腹でやらんとアカンとか。
また、市中では相変わらず「感染リスク」があるので、検査で陰性と結果が出ても検査実施機関では「陰性証明書は出しません」。
海外では、PCR検査が安価に実施出来るというのに、本邦では、健康保険の適用外で「自費」。しかも、有名どころのお医者さんは「タダの風邪なんだから、家で寝てれば治るっぺ。だから、検査もせんでエエ。下手に検査で来られても、検査大パニックだかんネ」というつもりらしい。

こうした(特異度の余り高くない)検査について、面白い話題があります。

cf. 【受験数学】条件付き確率の公式とイメージを徹底解説!!【確率】(例題つき) - hmorinari's diary
https://hmorinari.hatenablog.com/entry/2019/01/18/224939

このサイト様によると、1回の検査で陽性の結果が出ても、感染している確率は低いものだが、その検査陽性者集団に再検査すると、さらに確度が高くなると見込まれるらしく、「感染している確率が低いとは言え、検査自体が無意味ではありません」と述べています。

感染者の存在確率 (「事前確率」というそうです)を p としておきます。
サイト様の説明によると、「検査を受け、陽性という結果になった人が、ホントに感染しているのか」その確率 p' は、

  p' = (p*a) / ( (p*a) +  (1-p)*(1-b) )

で計算できるとのこと。
但し、
  p' ; 検査の結果、陽性だった人がホントに感染している確率
  p ; 感染症に罹患している、平均確率
  a ; 検査「感度」
  b ; 検査「特異度」
です。

サイト様の例では、
  p = 0.001 (0.1 %), a = 0.95 (95 %), b = 0.98 (98 %)
で計算しているので、検査を受け、陽性の結果になった人(サイト様では「A君」としております)が、ホントに感染している確率は

  p' = 0.04538 ... (4.538 %)

ですが、これは、同時に、検査で陽性の結果になった人々の感染確率=(検査陽性集団の)事前確率、とも言えるものです。
そこで、A君を含めた検査陽性者集団を再検査すると、

  p'' = 0.693... (69.3 %)

になります。再検査で陽性になった人々に、再再検査をすれば、

  p''' = 0.9907... (99.07 %)

という確度になります。

こうした、ちょっとした計算式の繰り返し適用は、フツーの電卓で行うには少々手間。一方、表計算ソフトで行うのは「牛刀を以って...」という例えの様に大掛かりではあります。
そこで、高機能電卓を用いるのは、どうでしょう。

感度 a と、特異度 b について、ある関係 (a+b > 1)を満たしていれば、多重検査による確度の加速は達成できます。

今度は、つぎの例でやってみました。
  p = 0.001 (0.1 %), a = 0.7 (70 %), b = 0.90 (90 %)

   0 回め   0.0069582
   1 回め   0.0467557
   2 回め   0.2555886
   3 回め   0.7061764
   4 回め   0.9438953

ここまで特異度が低い (偽陽性度が高い)場合、確度の加速を目指すとなると、再検査過程が多数回必要になります。実際、医療の現場で、こんな悠長な事をしているのだろうか ? やはり、多くの有名どころのお医者さんが申しておる、特異度 90〜99 % ちう値は、実用的ではないのだろうと。
実際、検体を放り込むと、あとは自動で検査をしてくれる医療機器とかあるそうで、こうした機器に採取した検体を放り込んでしまえば、検査過程でのコンタミ (検査過程での検体の汚染、コンタミネーション)も無さそうです。コンタミがなければ、特異度 99.99%以上、とか達成できそうです。

さて、実際はどうなのでしょうか ?

2020年8月4日火曜日

(ヤメては居りませんのヨ)

何か、書くことも思いつかず、まずは消息ポストです、ハイ。
申し訳ない。

以上

2020年4月12日日曜日

新型肺炎禍 ...

新型肺炎の蔓延を受け、なるべく外出をしないように、との事です。

海外では、こんな話題があります。

Texas Instruments、COVID-19で自宅学習を余儀なくされている学生を支援するため、グラフ電卓アプリ「TI-Nspire CAS for iPad」などを一時的に無料に。 - APPL CH
https://applech2.com/archives/20200321-texas-instruments-ti-nspire-cas-for-ipad-mac-free.html

TIはアメリカでグラフ電卓のシェア#1なので、こうした事をしております。
CASIOも負けずに、こうした取り組みをしております。

基本操作から例題による活用まで! 動画でわかるグラフ関数電卓 - casio.jp
https://web.casio.jp/dentaku/fxcg50/movie/?topics

こうした企業努力は素晴らしいものです。

さて、当初は「検査など不要」としていた厚労大臣でしたが、今日では、多くの自治体で新型肺炎の検査をしているとか。

東京都のバヤイ、2020/04/12の感染者数は197人となっております。

cf. 都内の最新感染動向
https://stopcovid19.metro.tokyo.lg.jp/

しかし、検査した人数は344人、との事。エエッー、少ないじゃん !!

当方、高機能電卓を使っておるので、簡単な計算をしてみましたヨ、ウヒョヒョ。

検査数に対する感染者の割合、という事で、こうした場合には「母比率の推計」という機能を使います。検査総数 n=344, 感染者数 x=197, 信頼区間 C=0.99 として計算すると、

hat p = 0.57267
0.5039 < p < 0.6413

となります。自覚症状があって検査に来ている人の、かなりの割合が陽性となっているらしい。

東京都の検査数、実際にはかなり少ないものですが、それもそのはずで、

(注)医療機関が保険適用で行った検査は含まれていない

なのだと。一体、誰を調べているのか ? 自費で検査した人だけなのか ?

医療機関の検査実数が上がってこない状況で、医療現場の混乱は伝わって来ない。
現実には、感染爆発が進行しているのかも知れません。