从二次回归模型 Y=sin(x)+∊( X服从均匀分布 U(0,2Π),∊ 服从标准正态分布)产生500个样本(x1,y1),(x2,y2)…..(x500,y500) ,作出 Y关于X 的 N-W回归函数曲线
时间: 2023-11-11 12:06:44 浏览: 91
以下是基于 Python 的代码示例,用于生成样本并拟合 N-W 回归函数:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 生成样本
np.random.seed(42)
x = np.random.uniform(0, 2 * np.pi, size=500)
epsilon = norm.rvs(size=500)
y = np.sin(x) + epsilon
# 定义 N-W 回归函数
def nw_reg(x, y, h):
n = len(x)
y_hat = np.zeros(n)
for i in range(n):
weights = np.exp(-(x - x[i])**2 / (2 * h**2))
y_hat[i] = np.sum(weights * y) / np.sum(weights)
return y_hat
# 拟合 N-W 回归函数
x_sorted = np.sort(x)
y_pred = nw_reg(x, y, h=0.5)
# 绘制结果
plt.scatter(x, y, alpha=0.5)
plt.plot(x_sorted, y_pred, color='red', linewidth=2)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('N-W Regression')
plt.show()
```
这段代码使用了 NumPy 库生成了 500 个样本,其中 x 服从均匀分布,epsilon 服从标准正态分布,y 由 x 和 epsilon 生成。接下来,定义了 N-W 回归函数 nw_reg,该函数使用高斯核函数对样本进行加权,并返回预测的 y 值。然后,使用该函数拟合回归曲线,并使用 matplotlib 库绘制结果。
阅读全文