[英]kernel Density simulation on python
我想在python上模擬內核密度,
但出現以下錯誤:TypeError:'numpy.ndarray'對象不可調用
這是代碼:
from matplotlib.pyplot import *
from math import *
from array import *
from import numpy *
from numpy.random import *
from scipy.misc import *
from scipy.stats import *
from scipy import *
from random import *
N=30
sigma=1
T=linspace(1,N,N)
n=30
X=np.random.normal(0, sigma, 1000)
x=1
alpha=0.45
def k_gaussien(x,sigma): #kernel gaussien
if(sigma<=0):
return((1/(sigma*sqrt(2*pi)))*exp(-(x**2/(2*sigma**2))))
def h(n,alpha): #bandwith
h=ones((1,1))
for i in range(2,N):
h[i]= h[i-1] + (i**(-alpha))
def f_PR(x,X,alpha,sigma): #Parzen-Rosenblatt estimator (f_PR)
global F;
F = zeros((N,0));
for k in range(2,N):
for i in range(1,k):
F[k] = F[k-1] + k_gaussien((x-X(i))*(i**alpha));
F[k] = F[k-1] *(1/(h(n,alpha)));
print(F);
# almost surely convergency
fPR=f_PR(x,X,alpha,sigma)
plot(T,fPR,lw=3)
plot(T,(1/sqrt(2*pi))*exp ((-1/2)*(x*x))*linspace(1,1,N,),'r--')
你很親密 通常,當您收到無法調用的錯誤時,這意味着您正在使用括號,應該在其中使用其他名稱,或者交換了一些變量名稱。
如果運行代碼,則回溯將向您顯示錯誤在以下行中:
F[k] = F[k-1] + k_gaussien((x-X(i))*(i**alpha));
您現在可以發現錯誤嗎? 變量X
的類型為numpy.ndarray
,實際上是不可調用的。 您想要的可能是X[i]
。
一個簡短的風格說明:在python中,您不需要;
秒。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.