質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

827閲覧

pythonの行列計算の結果が思うようにならない

tukutukubos

総合スコア24

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/06/26 15:48

発生している問題

pythonで重回帰分析のプログラムを書いているのですが、なかなか思った結果になりません。結果的に0よりも小さな値が出ることを望んでいるのですが、非常に大きい値が出てしまいます。計算に使っている配列の要素はすべて0以下なので、このように値が大きくなるとは思えません。

該当のソースコード

python

1sigma = np.cov(sample[:,2:4], rowvar=0, bias=0) 2print("sigma",sigma) 3print("X2",X2[:,1:3]) 4h = (X2[:,1:3] @ np.linalg.inv(sigma) @ X2[:,1:3].T) 5print(h)

出力

sigma [[5.31666667e-01 4.38888889e-04]
[4.38888889e-04 9.88888889e-07]]
X2 [[ 9.00e-04 1.15e+00]
[ 1.90e-03 4.50e-01]
[ 9.00e-04 -5.00e-02]
[-1.00e-04 1.15e+00]
[-1.00e-04 2.50e-01]
[-1.00e-04 -6.50e-01]
[-1.10e-03 -5.50e-01]
[-1.00e-04 -3.50e-01]
[-1.10e-03 -8.50e-01]
[-1.10e-03 -5.50e-01]]
h [[ 2110635.52147809 825898.51117836 -91768.18464405 2110637.0365399
458834.25694829 -1192968.52264332 -1009433.36540466 -642367.59611278
-1560034.2919352 -1009433.36540466]
[ 825898.51117836 323176.76066518 -35909.18768022 825899.10402404
179543.32988011 -466812.44426383 -394994.54317994 -251360.51954919
-610446.46789458 -394994.54317994]
[ -91768.18464405 -35909.18768022 3989.98293674 -91768.25051909
-19949.6248335 51869.00085209 43889.08767865 27929.45895689
67828.62957385 43889.08767865]
[ 2110637.0365399 825899.10402404 -91768.25051909 2110638.55160468
458834.58631044 -1192969.37898381 -1009434.08999745 -642368.05721906
-1560035.4117622 -1009434.08999745]
[ 458834.25694829 179543.32988011 -19949.6248335 458834.58631044
99746.67497409 -259341.23636226 -219442.25018497 -139645.26591681
-339138.22063042 -219442.25018497]
[-1192968.52264332 -466812.44426383 51869.00085209 -1192969.37898381
-259341.23636226 674286.9062593 570549.58962751 363077.52538544
881758.97050137 570549.58962751]
[-1009433.36540466 -394994.54317994 43889.08767865 -1009434.08999745
-219442.25018497 570549.58962751 482771.99394445 307218.97635669
746102.60721527 482771.99394445]
[ -642367.59611278 -251360.51954919 27929.45895689 -642368.05721906
-139645.26591681 363077.52538544 307218.97635669 195503.26161803
474793.2401241 307218.97635669]
[-1560034.2919352 -610446.46789458 67828.62957385 -1560035.4117622
-339138.22063042 881758.97050137 746102.60721527 474793.2401241
1153068.33759254 746102.60721527]
[-1009433.36540466 -394994.54317994 43889.08767865 -1009434.08999745
-219442.25018497 570549.58962751 482771.99394445 307218.97635669
746102.60721527 482771.99394445]]

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

自己解決しました。
SampleとXでは列同士が入れ替わっていたことが原因でした。

投稿2021/06/27 02:56

tukutukubos

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

入力データが書かれていないので、当てずっぽうの回答です。

np.covで期待しない数字が返ってくるのは軸を間違えている可能性が高いです。

sigma = np.cov(sample[:,2:4], rowvar=True, bias=False)

を試してみてください。

投稿2021/06/26 23:39

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tukutukubos

2021/06/27 02:37

回答ありがとうございます。実行してみましたが求めていた次元と違うものが出ました。引数にとっている行列は2*10行列でsigmaは2*2を取りたいのですが、実行すると10*10の行列が出ます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問