56020


標準平均をシミュレーションするプログラムを試作しようとして以下のコードを書きました。

[code]

    #数値計算
    import numpy as np
    import scipy as sp
    import pandas as pd
    from scipy import stats
    
    #グラフの描写
    from matplotlib import pyplot as plt
    import seaborn as sns
    sns.set()
    
    %matplotlib inline
    
    #標本平均を何度も計算する関数
    
    def calc_sample_mean(size,n_trial):
        sample_mean_array=np.zeros(n_trial)
        for i in range(0,n_trial):
            sample=population.rvs(size==size)
            sample_mean_array[i]=sp.mean(sample)
        return(sample_mean_array)
    
    #データを10個選んで標本平均を作る、10000回繰り返す
    
    np.random.seed(1)
    size_10=calc_sample_mean(size=10,n_trial=10000)
    size_10_df=pd.DataFrame({
        "sample_mean":size_10,
        "size":np.tile("size 10",10000)
    })
    
[/code]

引数の指定は間違っていないと思いますが、以下のようなエラーメッセージが出ます。

[code]

    TypeError                                 Traceback (most recent call last)
    <ipython-input-18-456f62e08f11> in <module>
         24 
         25 np.random.seed(1)
    ---> 26 size_10=calc_sample_mean(size=10,n_trial=10000)
         27 size_10_df=pd.DataFrame({
         28     "sample_mean":size_10,
    
    <ipython-input-18-456f62e08f11> in calc_sample_mean(size, n_trial)
         17     sample_mean_array=np.zeros(n_trial)
         18     for i in range(0,n_trial):
    ---> 19         sample=population.rvs(size==size)
         20         sample_mean_array[i]=sp.mean(sample)
         21     return(sample_mean_array)
    
    ~\Anaconda3\envs\Python3.7\lib\site-packages\scipy\stats\_distn_infrastructure.py in rvs(self, size, random_state)
        466         kwds = self.kwds.copy()
        467         kwds.update({'size': size, 'random_state': random_state})
    --> 468         return self.dist.rvs(*self.args, **kwds)
        469 
        470     def sf(self, x):
    
    ~\Anaconda3\envs\Python3.7\lib\site-packages\scipy\stats\_distn_infrastructure.py in rvs(self, *args, **kwds)
        950         # by _rvs().
        951         self._size = size
    --> 952         vals = self._rvs(*args)
        953 
        954         vals = vals * scale + loc
    
    ~\Anaconda3\envs\Python3.7\lib\site-packages\scipy\stats\_continuous_distns.py in _rvs(self)
        215     """
        216     def _rvs(self):
    --> 217         return self._random_state.standard_normal(self._size)
        218 
        219     def _pdf(self, x):
    
    mtrand.pyx in mtrand.RandomState.standard_normal()
    
    mtrand.pyx in mtrand.cont0_array()
    
    TypeError: an integer is required
    
[/code]

このエラーについて調べるもopen関数の例しかなく、よくわかりません


CC BY-SA 4.0
2019-06-22T15:07:07.173
56019
2019-06-22T15:38:03.097
2019-06-22T15:33:07.033
19110
34831
question
python python3
python3.7でTypeError: an integer is requiredが解決しません


エラーメッセージにも書かれているこの行における関数の引数が間違っていそうです。

[code]

    sample=population.rvs(size==size)
    
[/code]

変数 `population` の定義が無いので `rvs()`
が何なのか正確には分かりませんが（おそらく[これ](https://docs.scipy.org/doc/scipy-0.16.0/reference/generated/scipy.stats.rv_continuous.rvs.html)？）オプショナル引数
`size` を指定するのであれば `size=size` と書くべきです。`size==size` だと比較になってしまい、この場合 `True`
にしかなりません。


CC BY-SA 4.0
2019-06-22T15:38:03.097
56020
2019-06-22T15:38:03.097
19110
56019
answer