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

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

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

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

解決済

eCDF(経験的累積分布関数)グラフを描きたい

yesman-0303
yesman-0303

総合スコア3

Python

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

1回答

0グッド

0クリップ

197閲覧

投稿2022/11/17 08:45

編集2022/11/17 12:46

前提

統計量G1のeCDF(経験的累積分布関数)グラフを描きたい。
しかし、np.sortを使ってもうまくいかない

実現したいこと

統計量G1のeCDF(経験的累積分布関数)グラフを描きたい

発生している問題・エラーメッセージ

ValueError Traceback (most recent call last) Cell In [42], line 23 21 x_sort = np.sort(G1) 22 ecdf = np.arange(1, n[i]+1) / n[i] ---> 23 plt.plot(G1, ecdf, drawstyle='steps-pre') 24 xx = np.linspace(-2, 2, 100) 25 norm_cdf = norm.cdf(xx) packages\matplotlib\pyplot.py:2728, in plot(scalex, scaley, data, *args, **kwargs) 2726 @_copy_docstring_and_deprecators(Axes.plot) 2727 def plot(*args, scalex=True, scaley=True, data=None, **kwargs): -> 2728 return gca().plot( 2729 *args, scalex=scalex, scaley=scaley, 2730 **({"data": data} if data is not None else {}), **kwargs) ... 506 if x.ndim > 2 or y.ndim > 2: 507 raise ValueError(f"x and y can be no greater than 2D, but have " 508 f"shapes {x.shape} and {y.shape}") ValueError: x and y must have same first dimension, but have shapes (10000,) and (10,)

該当のソースコード

python

1n = [10, 20, 30, 50, 100, 300, 500, 1000] #樣本數 2N =10000 #實驗次數 3alfa = 0.05 4for i in range(len(n)): 5 if i < 1 or i == 7: 6 print(i) 7 # eCDF 8 x_sort = np.sort(G1) 9 ecdf = np.arange(1, n[i]+1) / n[i] 10 plt.plot(G1, ecdf, drawstyle='steps-pre') 11 xx = np.linspace(-2, 2, 100) 12 norm_cdf = norm.cdf(xx) 13 plt.plot(xx, norm_cdf, linestyle = '--', lw=5, color='r', alpha=0.5) 14 plt.show()

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

jbpb0

2022/11/17 09:10

質問に記載のエラーメッセージよりも上に「Traceback」と書かれてたら、そこから下をできるだけ省略せずに質問に記載してください (ここに書くのではなく、質問を編集して追記する) ユーザー名等の個人情報は伏せ字でいいですが、それ以外はできるだけそのまま記載してください

回答1

2

ベストアンサー

G1の要素数が10000なのに対して、i=0の場合に、ecdfの要素数は10なので、G1の要素数とecdfの要素数が一致していないといった内容のエラーです。
したがって、G1の要素数とecdfの要素数を一致させる必要があります。

単にG1のeCDFグラフを書くのであれば以下のように書くことで実現できます。

Python

1G1 = np.sort(G1) 2G1_len = len(G1) 3ecdf = np.arange(1, G1_len + 1) / G1_len 4plt.plot(G1, ecdf, marker='o', drawstyle='steps-pre')

G1からi個重複ありで取り出して、取り出したものについてeCDFを書くのであれば以下のように書くことができます。

Python

1sample_G1 = np.random.choice(G1, i, replace=True) 2sample_G1 = np.sort(sample_G1) 3ecdf = np.arange(1, i + 1) / i 4plt.plot(sample_G1, ecdf, marker='o', drawstyle='steps-pre')

G1からi個重複なしで取り出すのであればnp.random.choice()のreplace引数をFalseに変更して以下のように書くことで実現できます。

Python

1sample_G1 = np.random.choice(G1, i, replace=False) 2sample_G1 = np.sort(sample_G1) 3ecdf = np.arange(1, i + 1) / i 4plt.plot(sample_G1, ecdf, marker='o', drawstyle='steps-pre')

投稿2022/11/17 13:20

fixk

総合スコア70

yesman-0303👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

yesman-0303

2022/11/18 15:37

ありがとうございます

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python

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