配列の要素の分散の求め方 php言語

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
あい

配列の要素の分散の求め方 php言語

#1

投稿記事 by あい » 10年前

はじめまして。

例えば3つの配列 [1,2,3] [2,4,5] [6,2,5] があるとして、これらの要素の分散を求めるプログラムが知りたいです。

これら3つの配列の平均は[3,2.66,4.33]になると思います。 そして分散なのでこの平均を出した配列ともとの3つの配列をつかって

分散を[a,b,c] のように配列として出したいのですが、どのようにやるのでしょうか?

どなたかお願いいたします。

アバター
milfeulle
記事: 47
登録日時: 10年前
住所: マリーランド
連絡を取る:

Re: 配列の要素の分散の求め方 php言語

#2

投稿記事 by milfeulle » 10年前

はじめまして! 配列の全ての要素の分散を求めたいのですね。ところで平均値はどうやって求めたのでしょう? 平均値が求められれば分散も少し帰るだけでできると思います。まずはどこまでプログラムを書いて、どこまでできて、どこで躓いてしまったのか教えて頂けるとお答えしやすいと思います。
ζ*'ヮ')ζプログラミングはみんなで奏でるシンフォニー

あい

Re: 配列の要素の分散の求め方 php言語

#3

投稿記事 by あい » 10年前

ご返信ありがとうございます。

恥ずかしながら平均を求める段階でつまずいてしまっている段階でプログラムをかけていない状況です。。

配列の分散となるとどのように進めてよいのかもわからない段階です。。 

もとの配列はfile_get_contentsで取得したxmlファイルのものを使用したいのですが。

$array1  = file_get_contents("xmlファイル");
$array2 = file_get_contents("xmlファイル");
$array3 = file_get_contents("xmlファイル");

このように配列ファイルを取得してからのプログラムがわからない状況です。

よろしくお願いしたいです。

アバター
milfeulle
記事: 47
登録日時: 10年前
住所: マリーランド
連絡を取る:

Re: 配列の要素の分散の求め方 php言語

#4

投稿記事 by milfeulle » 10年前

つまり、
1. 1つのXMLファイルを読み込み、
2. 数値の配列に変換し、
3. 配列の平均値を求め、
4. それを利用して分散を求める
わけですね。

となるとこれらを順番に解決しなければなりませんが、まずはそのXMLの例を示して下さい。どのようなXMLになっているのか、数値は3個だけなのか、XMLファイルは1種類だけなのか、XMLファイルではないといけないのか、などです。

申し訳ありません。PHPには詳しくないのですが、file_get_contents関数はファイルを文字列として取得するものだと思いますが、自動的に配列になってくれるのでしょうか? (「php XML」で検索するといろいろ例が出てきます。)
ζ*'ヮ')ζプログラミングはみんなで奏でるシンフォニー

あい

Re: 配列の要素の分散の求め方 php言語

#5

投稿記事 by あい » 10年前

xml ファイルは以下のようになっております

[例:example.xml]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<real>0.23593497276306152</real>
<real>0.45295000076293945</real>
<real>0.26988601684570312</real>
</array>
</plist>

このような数値が3個のxmlファイルを3つ読み込みます。 
 
$array1  = file_get_contents("example.xml");

$doc1 = new DOMDocument();
$doc1->loadXML($array1);

$items1 = $doc1->getElementsByTagName("real");
$array1 = [];

foreach ($items1 as $node){

$item_array1[] = $node->nodeValue;
}

配列には上記のように格納しているの流れとなっております。

この流れをxmlファイル3つに適応し、xmlファイルを配列にいれています。

この先で分散を求めたいのですが全くわからない状況です。。

よろしくおねがいします。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 配列の要素の分散の求め方 php言語

#6

投稿記事 by みけCAT » 10年前

まず、1個の配列に格納されている数値の分散を求めることはできますか?
例えば、[1,2,3]という配列が与えられたとき、このデータの分散0.67を求めることはできますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

あい

Re: 配列の要素の分散の求め方 php言語

#7

投稿記事 by あい » 10年前

ご返信ありがとうございます

配列内の分散でしたらstats_variance をつかえばいいのでしょうか?

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 配列の要素の分散の求め方 php言語

#8

投稿記事 by みけCAT » 10年前

PHP: stats_variance - Manual
これを使うと応用が効かなそうなので、できればライブラリを使わず自分で計算するプログラムを実装してみてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

あい

Re: 配列の要素の分散の求め方 php言語

#9

投稿記事 by あい » 10年前

$average=0;
foreach($array1 as $value)
{
$average += $value;
}

$average =($average/count($array));
return $average;

....

}

平均までは求められますが、ここから分散を求めるのができないです。。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 配列の要素の分散の求め方 php言語

#10

投稿記事 by みけCAT » 10年前

分散の(数学的な)求め方がわからないですか?
それとも、分散の求め方はわかるが、それをプログラムにできないですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

あい

Re: 配列の要素の分散の求め方 php言語

#11

投稿記事 by あい » 10年前

分散の求め方はわかるのですが、それをプログラムに直すのがどうしてもできないです。。

お手数かけ手申し訳ありません、

あい

Re: 配列の要素の分散の求め方 php言語

#12

投稿記事 by あい » 10年前

どなたかよろしくお願いしたいです。

Poco
記事: 161
登録日時: 13年前

Re: 配列の要素の分散の求め方 php言語

#13

投稿記事 by Poco » 10年前

分散って2種類の平均の差なので、平均を求められて分散が分からない理由が分かりません。
二乗の平均をA、平均をBとすると、分散Vは
 V=A-B*B
で求めることができるのですが。

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: 配列の要素の分散の求め方 php言語

#14

投稿記事 by ISLe » 10年前

n番目の要素ごとに分散を求める方法が分からないという話ですよね。
foreachで回していてnがどこだか分からないということだと思いますが。

閉鎖

“C言語何でも質問掲示板” へ戻る