Visual Basic 中学校 掲示板
投稿内容
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
>
投稿一覧
>
平均・標準偏差を簡単に求められるクラス
タグの編集...
投稿者
B.B.Gs
 (社会人)   投稿日時
2021/11/5 16:56:10
VB2019(.net frameworkは4.8)を使用しています。
例えば複数の数値を取得し、この数値データを指定コレクションに追加すると、
コレクション分の平均・標準偏差を自動的に計算してくれるようなクラスはないでしょうか?
自分で計算してもいいのですが、こういった統計用のクラスは
.netに標準で備わっているんじゃないかと思い、質問しました。
投稿者
魔界の仮面弁士
 (社会人)   投稿日時
2021/11/5 19:15:57
この手の統計処理としての有名どころとなると、Math.NET Numerics あたりだと思います。
標準で備わっている標準偏差という話になると、
System.Data.Objects.EntityFunctions.StandardDeviation メソッドぐらいかな…?
こちらは Entity Framework 前提です。
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.objects.entityfunctions.standarddeviation?view=netframework-4.8
Imports
MathNet.Numerics.Statistics
Module
Module1
Sub
Main()
'実際には Double の一覧だけあれば良い
Dim
テスト結果
As
(Name
As
String
, Score
As
Double
)() = {
(
"鈴木"
, 60),
(
"田中"
, 83),
(
"佐藤"
, 72),
(
"石井"
, 68),
(
"小林"
, 93),
(
"杉山"
, 45),
(
"森田"
, 78),
(
"酒井"
, 65),
(
"服部"
, 54),
(
"須藤"
, 42)
}
Dim
avg
As
Double
=
Aggregate
p
In
テスト結果
Into
Average(p.Score)
Console.WriteLine(
" 平均点 {0:N2}"
, avg)
Dim
stat
As
New
DescriptiveStatistics(テスト結果.
Select
(
Function
(x) x.Score))
Console.WriteLine(
"標準偏差 {0:N2}"
, stat.StandardDeviation)
Console.WriteLine()
For
Each
p
In
テスト結果
Console.WriteLine($
"{p.Name} 点数:{p.Score,3:N0} 偏差:{avg - p.Score,5:N1}"
)
Next
Console.ReadLine()
End
Sub
End
Module