Numpy 二值随机变量的局部加权平滑
我有一个随机变量,如下所示:Numpy 二值随机变量的局部加权平滑,numpy,scipy,histogram,logistic-regression,probability-density,Numpy,Scipy,Histogram,Logistic Regression,Probability Density,我有一个随机变量,如下所示: import numpy as np import matplotlib.pyplot as plt from scipy.stats import binned_statistic list = np.ndarray(shape=(200,2)) g = np.random.rand(200) for i in range(len(g)): list[i] = (g[i], np.random.choice([0, 1], p=[1-g[i], g[i
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import binned_statistic
list = np.ndarray(shape=(200,2))
g = np.random.rand(200)
for i in range(len(g)):
list[i] = (g[i], np.random.choice([0, 1], p=[1-g[i], g[i]]))
print(list)
plt.plot(list[:,0], list[:,1], 'o')
f(x)=1,概率为g(x)
f(x)=0,概率为1-g(x)
其中0import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import binned_statistic
list = np.ndarray(shape=(200,2))
g = np.random.rand(200)
for i in range(len(g)):
list[i] = (g[i], np.random.choice([0, 1], p=[1-g[i], g[i]]))
print(list)
plt.plot(list[:,0], list[:,1], 'o')
现在,我想从这些点检索函数g。我所能想到的最好方法是使用绘制直方图并使用平均统计:
bin_means, bin_edges, bin_number = binned_statistic(list[:,0], list[:,1], statistic='mean', bins=10)
plt.hlines(bin_means, bin_edges[:-1], bin_edges[1:], lw=2)
相反,我想得到生成函数的连续估计
我想这是关于内核密度估计的,但我找不到合适的指针 直接,无需显式拟合估计器:
import seaborn as sns
g = sns.lmplot(x= , y= , y_jitter=.02 , logistic=True)
插入x=
你的外生变量和类似的y=
因变量y_jitter
是一个抖动点,如果你有很多数据点的话,它可以提高可视性logistic=True
是这里的要点。它将为您提供数据的逻辑回归线
Seaborn基本上是围绕
matplotlib
定制的,并且与pandas
配合使用非常好,以防您想将数据扩展到数据帧。您可以在Statsmodels
sklearn
中找到KDE,而scipy
也有KDE。如果只需要一个绘图,请查看seaborn
,它是distplot
或kdeplot
。但是为什么你想要二进制数据的kde呢?@MarvinTaschenberger我关于kde的评论可能会误导你。看来我有逻辑回归问题。但我不是在尝试适合一个模型。我想以一种平滑的方式绘制它。这看起来也很相关:现在,我知道我想要的是局部加权散点图平滑。谢谢你指向sns。df=pd.DataFrame()df['x']=list[:,0]df['y']=list[:,1]sns.lmplot(x='x',y='y',data=df,lowess=True)plt.show()