时间序列数据的回归分析代码怎么写

时间序列数据的回归分析代码怎么写

时间序列数据的回归分析代码可以通过Python语言中的各种库来实现,例如,pandas、statsmodels、scikit-learn等。首先,导入必要的库并读取时间序列数据;然后,进行数据预处理,包括缺失值处理、数据平稳性检测等;接着,选择合适的回归模型,例如线性回归、ARIMA模型等;最后,进行模型训练和预测。具体步骤如下:

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

from statsmodels.tsa.stattools import adfuller

from statsmodels.tsa.arima_model import ARIMA

from sklearn.metrics import mean_squared_error

读取时间序列数据

data = pd.read_csv('time_series_data.csv', index_col='Date', parse_dates=True)

time_series = data['value']

数据预处理 - 检测平稳性

def test_stationarity(timeseries):

result = adfuller(timeseries)

print('ADF Statistic: %f' % result[0])

print('p-value: %f' % result[1])

if result[1] < 0.05:

print("数据是平稳的")

else:

print("数据不是平稳的")

test_stationarity(time_series)

差分使其平稳

diff_time_series = time_series.diff().dropna()

test_stationarity(diff_time_series)

划分训练集和测试集

train_size = int(len(diff_time_series) * 0.8)

train, test = diff_time_series[0:train_size], diff_time_series[train_size:len(diff_time_series)]

构建ARIMA模型

model = ARIMA(train, order=(1, 1, 1)) # (p,d,q)参数需要调优

model_fit = model.fit(disp=0)

print(model_fit.summary())

预测

forecast, stderr, conf_int = model_fit.forecast(steps=len(test))

plt.plot(test, label='Actual')

plt.plot(pd.Series(forecast, index=test.index), label='Forecast')

plt.fill_between(test.index, conf_int[:, 0], conf_int[:, 1], color='k', alpha=0.1)

plt.legend()

plt.show()

计算误差

error = mean_squared_error(test, forecast)

print('Test MSE: %.3f' % error)

一、时间序列数据预处理

时间序列数据的预处理是非常关键的一步,它直接影响到后续模型的准确性和稳定性。预处理步骤包括缺失值处理、平稳性检测和数据差分等。缺失值处理可以通过插值法、前向填充、后向填充等方法来实现。对于平稳性检测,常用的方法是ADF(Augmented Dickey-Fuller)检验,如果p值小于0.05,则数据是平稳的。若数据不平稳,可以通过差分来使其平稳。

缺失值处理是时间序列数据预处理的第一步,常见的方法有插值法、前向填充、后向填充等。插值法通过计算缺失值前后数据的平均值来填补缺失值,适用于数据波动较小的情况;前向填充和后向填充则是将前一个或后一个非缺失值填补到缺失位置,适用于数据波动较大的情况。对于平稳性检测,ADF(Augmented Dickey-Fuller)检验是最常用的方法之一。ADF检验的原假设是数据存在单位根,即数据不平稳。通过计算ADF统计量和p值,如果p值小于0.05,则可以拒绝原假设,认为数据是平稳的。如果数据不平稳,可以通过差分来使其平稳。差分是通过计算相邻数据点的差值来消除数据中的趋势和季节性成分,使数据变得平稳。

在时间序列数据预处理中,除了缺失值处理和平稳性检测,还需要进行数据的标准化和归一化处理。标准化是将数据转换为均值为0,标准差为1的标准正态分布,适用于数据的数值范围较大且分布不均匀的情况;归一化是将数据缩放到0到1之间,适用于数据的数值范围较小且分布均匀的情况。通过标准化或归一化处理,可以消除数据的量纲差异,提高模型的训练效果和预测精度。

二、模型选择与构建

时间序列回归分析模型有多种选择,常见的包括线性回归模型、ARIMA模型、SARIMA模型等。ARIMA模型适用于平稳时间序列数据,其参数包括p(自回归阶数)、d(差分阶数)、q(移动平均阶数)。SARIMA模型则在ARIMA模型的基础上增加了季节性成分,适用于具有季节性变化的时间序列数据。选择合适的模型和参数需要结合数据的特性和具体需求。

ARIMA(Autoregressive Integrated Moving Average)模型是时间序列分析中最常用的一种模型,它通过对时间序列数据进行自回归、差分和移动平均处理,来捕捉数据中的趋势和波动。ARIMA模型的参数包括p(自回归阶数)、d(差分阶数)和q(移动平均阶数),需要根据数据的特性进行调优。在选择ARIMA模型的参数时,可以通过AIC(Akaike Information Criterion)和BIC(Bayesian Information Criterion)等指标来评估模型的优劣,选择AIC或BIC值最小的参数组合。

SARIMA(Seasonal ARIMA)模型是在ARIMA模型的基础上增加了季节性成分,适用于具有季节性变化的时间序列数据。SARIMA模型的参数除了ARIMA模型的p、d、q外,还包括季节性自回归阶数P、季节性差分阶数D和季节性移动平均阶数Q,以及季节性周期s。通过对时间序列数据进行季节性分解和季节性调整,可以更准确地捕捉数据中的季节性变化,提高模型的预测精度。

除了ARIMA和SARIMA模型,时间序列回归分析中还可以采用其他模型,如线性回归模型、支持向量机(SVM)回归模型、神经网络模型等。线性回归模型适用于线性关系较明显的数据,通过建立时间序列数据和时间的线性关系来进行预测;支持向量机回归模型通过构建高维空间中的超平面来捕捉数据中的非线性关系,适用于非线性关系较强的数据;神经网络模型通过多层神经元的非线性变换来捕捉数据中的复杂关系,适用于大规模、高维度的数据。

三、模型训练与评估

在模型训练阶段,将预处理后的数据划分为训练集和测试集,并使用训练集来拟合模型。模型评估可以通过各种指标来衡量模型的性能,如均方误差(MSE)、平均绝对误差(MAE)等。这些指标可以帮助我们评估模型的预测精度和稳定性,从而选择最优的模型。模型训练和评估的过程是一个不断迭代的过程,需要根据评估结果不断调整模型参数和结构,以提高模型的性能。

在模型训练阶段,将预处理后的数据划分为训练集和测试集,并使用训练集来拟合模型。训练集用于训练模型,测试集用于评估模型的性能。常用的模型评估指标包括均方误差(MSE)、平均绝对误差(MAE)、均方根误差(RMSE)等。这些指标可以帮助我们评估模型的预测精度和稳定性,从而选择最优的模型。均方误差(MSE)是预测值与实际值之间差值的平方的平均值,反映了预测值与实际值之间的偏差;平均绝对误差(MAE)是预测值与实际值之间差值的绝对值的平均值,反映了预测值与实际值之间的偏差;均方根误差(RMSE)是均方误差的平方根,反映了预测值与实际值之间的偏差。

在模型训练和评估的过程中,可以通过交叉验证来提高模型的泛化能力和稳定性。交叉验证是一种将数据集划分为多个子集的方法,在每次训练时使用一个子集作为验证集,其他子集作为训练集,重复多次后计算所有验证集的平均误差。通过交叉验证,可以避免模型在训练集上的过拟合,提高模型在测试集上的预测精度和稳定性。

在模型训练和评估的过程中,还可以通过网格搜索来优化模型参数。网格搜索是一种遍历所有可能的参数组合的方法,通过计算每个参数组合的评估指标来选择最优的参数组合。网格搜索可以帮助我们找到最优的模型参数,从而提高模型的预测精度和稳定性。

四、模型预测与应用

在模型预测阶段,将训练好的模型应用于测试集或新的时间序列数据进行预测。预测结果可以用于各种实际应用,如销售预测、市场分析、需求预测等。FineBI是一款优秀的BI工具,可以帮助我们可视化和分析预测结果。通过FineBI,我们可以直观地展示预测结果,进行深度分析和挖掘,帮助企业做出更准确的决策。

FineBI是帆软旗下的一款商业智能(BI)工具,具有强大的数据可视化和分析功能。通过FineBI,我们可以将时间序列数据的预测结果进行可视化展示,帮助我们更直观地理解和分析数据。FineBI支持多种图表类型,如折线图、柱状图、饼图等,可以根据不同的需求选择合适的图表类型进行展示。FineBI还支持数据钻取、数据过滤和数据聚合等功能,可以帮助我们进行深度分析和挖掘,发现数据中的潜在规律和趋势,帮助企业做出更准确的决策。

在实际应用中,时间序列数据的预测结果可以用于多种场景,如销售预测、市场分析、需求预测等。通过销售预测,可以帮助企业制定销售计划、优化库存管理、提高销售效率;通过市场分析,可以帮助企业了解市场趋势、把握市场机会、制定市场策略;通过需求预测,可以帮助企业优化生产计划、提高生产效率、降低生产成本。通过FineBI的可视化和分析功能,可以帮助我们更好地理解和应用时间序列数据的预测结果,提升企业的运营效率和竞争力。

FineBI官网: https://s.fanruan.com/f459r;

在时间序列数据的预测与应用中,除了FineBI,还可以结合其他数据分析工具和技术,如机器学习、深度学习、大数据分析等。通过机器学习和深度学习技术,可以构建更复杂、更精确的预测模型,捕捉数据中的非线性关系和复杂模式;通过大数据分析技术,可以处理大规模、高维度的数据,提高数据处理效率和预测精度。结合多种工具和技术,可以帮助我们更好地理解和应用时间序列数据的预测结果,提升企业的运营效率和竞争力。

五、模型优化与改进

在实际应用中,时间序列数据的预测模型需要不断优化和改进,以适应数据变化和需求变化。模型优化可以通过调整模型参数、选择不同的模型结构、引入新的特征等方法来实现。此外,还可以结合业务知识和经验,进行模型的定性分析和调整,提高模型的预测精度和稳定性。

模型优化是一个不断迭代的过程,需要根据模型的预测结果和评估指标,不断调整模型参数和结构。模型参数的调整可以通过网格搜索、随机搜索等方法来实现,选择最优的参数组合,提高模型的预测精度和稳定性。模型结构的选择可以根据数据的特性和需求,选择合适的模型类型,如线性回归模型、ARIMA模型、SARIMA模型、支持向量机回归模型、神经网络模型等。通过选择合适的模型结构,可以捕捉数据中的复杂关系和模式,提高模型的预测精度和稳定性。

在模型优化过程中,还可以引入新的特征,提高模型的预测精度。特征工程是机器学习和时间序列分析中的重要步骤,通过对原始数据进行加工和转换,提取新的特征,提高模型的预测精度。常见的特征工程方法包括时间特征提取、统计特征提取、频域特征提取等。时间特征提取是将时间序列数据中的时间信息提取为特征,如年、月、日、星期等;统计特征提取是将时间序列数据中的统计信息提取为特征,如均值、方差、偏度、峰度等;频域特征提取是将时间序列数据进行傅里叶变换、小波变换等,提取频域特征。通过引入新的特征,可以提高模型的预测精度和稳定性。

在模型优化过程中,还需要结合业务知识和经验,进行模型的定性分析和调整。通过结合业务知识和经验,可以更好地理解数据的特性和规律,进行模型的定性分析和调整,提高模型的预测精度和稳定性。例如,在销售预测中,可以结合市场趋势、季节性变化、促销活动等因素,进行模型的定性分析和调整,提高预测的准确性和可靠性。

六、实战案例与总结

通过一个实际案例,可以更好地理解时间序列数据的回归分析过程。以销售预测为例,通过导入销售数据,进行数据预处理、模型选择与构建、模型训练与评估、模型预测与应用、模型优化与改进等步骤,完成整个时间序列数据的回归分析过程。通过FineBI进行数据可视化和分析,可以直观地展示预测结果,帮助企业做出更准确的决策。在实际应用中,需要根据具体需求选择合适的模型和参数,不断优化和改进模型,提高预测精度和稳定性。

通过一个实际案例,可以更好地理解时间序列数据的回归分析过程。以销售预测为例,首先导入销售数据,进行数据预处理,包括缺失值处理、平稳性检测和数据差分等。缺失值处理可以通过插值法、前向填充、后向填充等方法来实现;平稳性检测可以通过ADF检验来实现,如果数据不平稳,可以通过差分来使其平稳。接着,选择合适的回归模型,如ARIMA模型,并进行模型的构建和参数调优。通过AIC和BIC等指标评估模型的优劣,选择最优的参数组合。然后,将数据划分为训练集和测试集,进行模型训练和评估。通过均方误差(MSE)、平均绝对误差(MAE)等指标评估模型的预测精度和稳定性。接着,将训练好的模型应用于测试集或新的时间序列数据进行预测,通过FineBI进行数据可视化和分析,直观地展示预测结果。最后,根据预测结果和评估指标,不断优化和改进模型,通过调整模型参数、选择不同的模型结构、引入新的特征等方法,提高模型的预测精度和稳定性。

通过这个实际案例,可以看到时间序列数据的回归分析是一个系统的过程,需要结合数据的特性和具体需求,进行数据预处理、模型选择与构建、模型训练与评估、模型预测与应用、模型优化与改进等步骤。通过FineBI进行数据可视化和分析,可以直观地展示预测结果,帮助企业做出更准确的决策。在实际应用中,需要根据具体需求选择合适的模型和参数,不断优化和改进模型,提高预测精度和稳定性。

FineBI官网: https://s.fanruan.com/f459r;

相关问答FAQs:

时间序列数据的回归分析代码怎么写?

时间序列数据的回归分析是一种用于分析和预测数据随时间变化的趋势和模式的强大工具。为了实现时间序列数据的回归分析,通常使用Python的多个库,如Pandas、NumPy、Statsmodels和Matplotlib等。以下是一个简单的示例,展示了如何使用这些工具进行时间序列数据的回归分析。

1. 准备环境

首先,确保安装了必要的库。可以使用以下命令进行安装:

pip install pandas numpy statsmodels matplotlib

2. 导入库

在Python脚本或Jupyter Notebook中,导入所需的库:

import pandas as pd
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt

3. 创建或加载时间序列数据

接下来,可以创建一个简单的时间序列数据集,或者从CSV文件等加载数据。以下是一个示例:

# 创建一个简单的时间序列数据集
date_rng = pd.date_range(start='2020-01-01', end='2020-12-31', freq='D')
data = np.random.randn(len(date_rng))  # 生成随机数据
ts_data = pd.DataFrame(data, index=date_rng, columns=['value'])

# 打印数据的前几行
print(ts_data.head())

4. 数据可视化

在进行回归分析之前,通常会对数据进行可视化,以便更好地理解数据的趋势和季节性。

plt.figure(figsize=(12, 6))
plt.plot(ts_data.index, ts_data['value'], label='Time Series Data')
plt.title('Time Series Data Visualization')
plt.xlabel('Date')
plt.ylabel('Value')
plt.legend()
plt.show()

5. 数据预处理

在进行回归分析之前,可能需要进行一些数据预处理,比如去除缺失值、平稳化数据等。

# 检查缺失值
print(ts_data.isnull().sum())

# 进行差分以平稳化数据
ts_data['diff'] = ts_data['value'].diff()
ts_data = ts_data.dropna()  # 去除缺失值

6. 回归分析

使用Statsmodels库进行回归分析。可以使用线性回归来拟合时间序列数据。

# 定义自变量和因变量
X = np.arange(len(ts_data)).reshape(-1, 1)  # 时间序列的索引作为自变量
y = ts_data['diff'].values  # 差分后的数据作为因变量

# 添加常数项
X = sm.add_constant(X)

# 拟合线性回归模型
model = sm.OLS(y, X).fit()

# 输出模型摘要
print(model.summary())

7. 模型评估

可以通过模型的R平方值、p值等指标来评估模型的性能。

# 评估模型
print('R-squared:', model.rsquared)
print('p-values:', model.pvalues)

8. 预测

根据模型进行未来数据的预测。

# 生成未来的时间索引
future_index = pd.date_range(start='2021-01-01', periods=30, freq='D')
future_X = np.arange(len(ts_data), len(ts_data) + len(future_index)).reshape(-1, 1)
future_X = sm.add_constant(future_X)

# 进行预测
predictions = model.predict(future_X)

# 可视化预测结果
plt.figure(figsize=(12, 6))
plt.plot(ts_data.index, ts_data['value'], label='Original Data')
plt.plot(future_index, predictions, label='Predictions', color='red')
plt.title('Time Series Data and Predictions')
plt.xlabel('Date')
plt.ylabel('Value')
plt.legend()
plt.show()

结论

时间序列数据的回归分析为理解和预测随时间变化的趋势提供了有效的方法。通过上述步骤,您可以利用Python进行时间序列数据的回归分析,从数据预处理、模型建立到结果可视化,整个过程都能有效实施。在实际应用中,数据的特性和具体需求可能会有所不同,因此灵活调整代码和参数是必要的。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,帆软不对内容的真实、准确或完整作任何形式的承诺。具体产品功能请以帆软官方帮助文档为准,或联系您的对接销售进行咨询。如有其他问题,您可以通过联系blog@fanruan.com进行反馈,帆软收到您的反馈后将及时答复和处理。

帆软小助手
上一篇 2024 年 11 月 24 日
下一篇 2024 年 11 月 24 日

传统式报表开发 VS 自助式数据分析

一站式数据分析平台,大大提升分析效率

数据准备
数据编辑
数据可视化
分享协作
可连接多种数据源,一键接入数据库表或导入Excel
可视化编辑数据,过滤合并计算,完全不需要SQL
内置50+图表和联动钻取特效,可视化呈现数据故事
可多人协同编辑仪表板,复用他人报表,一键分享发布
BI分析看板Demo>

每个人都能上手数据分析,提升业务

通过大数据分析工具FineBI,每个人都能充分了解并利用他们的数据,辅助决策、提升业务。

销售人员
财务人员
人事专员
运营人员
库存管理人员
经营管理人员

销售人员

销售部门人员可通过IT人员制作的业务包轻松完成销售主题的探索分析,轻松掌握企业销售目标、销售活动等数据。在管理和实现企业销售目标的过程中做到数据在手,心中不慌。

FineBI助力高效分析
易用的自助式BI轻松实现业务分析
随时根据异常情况进行战略调整
免费试用FineBI

财务人员

财务分析往往是企业运营中重要的一环,当财务人员通过固定报表发现净利润下降,可立刻拉出各个业务、机构、产品等结构进行分析。实现智能化的财务运营。

FineBI助力高效分析
丰富的函数应用,支撑各类财务数据分析场景
打通不同条线数据源,实现数据共享
免费试用FineBI

人事专员

人事专员通过对人力资源数据进行分析,有助于企业定时开展人才盘点,系统化对组织结构和人才管理进行建设,为人员的选、聘、育、留提供充足的决策依据。

FineBI助力高效分析
告别重复的人事数据分析过程,提高效率
数据权限的灵活分配确保了人事数据隐私
免费试用FineBI

运营人员

运营人员可以通过可视化化大屏的形式直观展示公司业务的关键指标,有助于从全局层面加深对业务的理解与思考,做到让数据驱动运营。

FineBI助力高效分析
高效灵活的分析路径减轻了业务人员的负担
协作共享功能避免了内部业务信息不对称
免费试用FineBI

库存管理人员

库存管理是影响企业盈利能力的重要因素之一,管理不当可能导致大量的库存积压。因此,库存管理人员需要对库存体系做到全盘熟稔于心。

FineBI助力高效分析
为决策提供数据支持,还原库存体系原貌
对重点指标设置预警,及时发现并解决问题
免费试用FineBI

经营管理人员

经营管理人员通过搭建数据分析驾驶舱,打通生产、销售、售后等业务域之间数据壁垒,有利于实现对企业的整体把控与决策分析,以及有助于制定企业后续的战略规划。

FineBI助力高效分析
融合多种数据源,快速构建数据中心
高级计算能力让经营者也能轻松驾驭BI
免费试用FineBI

帆软大数据分析平台的优势

01

一站式大数据平台

从源头打通和整合各种数据资源,实现从数据提取、集成到数据清洗、加工、前端可视化分析与展现。所有操作都可在一个平台完成,每个企业都可拥有自己的数据分析平台。

02

高性能数据引擎

90%的千万级数据量内多表合并秒级响应,可支持10000+用户在线查看,低于1%的更新阻塞率,多节点智能调度,全力支持企业级数据分析。

03

全方位数据安全保护

编辑查看导出敏感数据可根据数据权限设置脱敏,支持cookie增强、文件上传校验等安全防护,以及平台内可配置全局水印、SQL防注防止恶意参数输入。

04

IT与业务的最佳配合

FineBI能让业务不同程度上掌握分析能力,入门级可快速获取数据和完成图表可视化;中级可完成数据处理与多维分析;高级可完成高阶计算与复杂分析,IT大大降低工作量。

使用自助式BI工具,解决企业应用数据难题

数据分析平台,bi数据可视化工具

数据分析,一站解决

数据准备
数据编辑
数据可视化
分享协作

可连接多种数据源,一键接入数据库表或导入Excel

数据分析平台,bi数据可视化工具

可视化编辑数据,过滤合并计算,完全不需要SQL

数据分析平台,bi数据可视化工具

图表和联动钻取特效,可视化呈现数据故事

数据分析平台,bi数据可视化工具

可多人协同编辑仪表板,复用他人报表,一键分享发布

数据分析平台,bi数据可视化工具

每个人都能使用FineBI分析数据,提升业务

销售人员
财务人员
人事专员
运营人员
库存管理人员
经营管理人员

销售人员

销售部门人员可通过IT人员制作的业务包轻松完成销售主题的探索分析,轻松掌握企业销售目标、销售活动等数据。在管理和实现企业销售目标的过程中做到数据在手,心中不慌。

易用的自助式BI轻松实现业务分析

随时根据异常情况进行战略调整

数据分析平台,bi数据可视化工具

财务人员

财务分析往往是企业运营中重要的一环,当财务人员通过固定报表发现净利润下降,可立刻拉出各个业务、机构、产品等结构进行分析。实现智能化的财务运营。

丰富的函数应用,支撑各类财务数据分析场景

打通不同条线数据源,实现数据共享

数据分析平台,bi数据可视化工具

人事专员

人事专员通过对人力资源数据进行分析,有助于企业定时开展人才盘点,系统化对组织结构和人才管理进行建设,为人员的选、聘、育、留提供充足的决策依据。

告别重复的人事数据分析过程,提高效率

数据权限的灵活分配确保了人事数据隐私

数据分析平台,bi数据可视化工具

运营人员

运营人员可以通过可视化化大屏的形式直观展示公司业务的关键指标,有助于从全局层面加深对业务的理解与思考,做到让数据驱动运营。

高效灵活的分析路径减轻了业务人员的负担

协作共享功能避免了内部业务信息不对称

数据分析平台,bi数据可视化工具

库存管理人员

库存管理是影响企业盈利能力的重要因素之一,管理不当可能导致大量的库存积压。因此,库存管理人员需要对库存体系做到全盘熟稔于心。

为决策提供数据支持,还原库存体系原貌

对重点指标设置预警,及时发现并解决问题

数据分析平台,bi数据可视化工具

经营管理人员

经营管理人员通过搭建数据分析驾驶舱,打通生产、销售、售后等业务域之间数据壁垒,有利于实现对企业的整体把控与决策分析,以及有助于制定企业后续的战略规划。

融合多种数据源,快速构建数据中心

高级计算能力让经营者也能轻松驾驭BI

数据分析平台,bi数据可视化工具

商品分析痛点剖析

01

打造一站式数据分析平台

一站式数据处理与分析平台帮助企业汇通各个业务系统,从源头打通和整合各种数据资源,实现从数据提取、集成到数据清洗、加工、前端可视化分析与展现,帮助企业真正从数据中提取价值,提高企业的经营能力。

02

定义IT与业务最佳配合模式

FineBI以其低门槛的特性,赋予业务部门不同级别的能力:入门级,帮助用户快速获取数据和完成图表可视化;中级,帮助用户完成数据处理与多维分析;高级,帮助用户完成高阶计算与复杂分析。

03

深入洞察业务,快速解决

依托BI分析平台,开展基于业务问题的探索式分析,锁定关键影响因素,快速响应,解决业务危机或抓住市场机遇,从而促进业务目标高效率达成。

04

打造一站式数据分析平台

一站式数据处理与分析平台帮助企业汇通各个业务系统,从源头打通和整合各种数据资源,实现从数据提取、集成到数据清洗、加工、前端可视化分析与展现,帮助企业真正从数据中提取价值,提高企业的经营能力。

电话咨询
电话咨询
电话热线: 400-811-8890转1
商务咨询: 点击申请专人服务
技术咨询
技术咨询
在线技术咨询: 立即沟通
紧急服务热线: 400-811-8890转2
微信咨询
微信咨询
扫码添加专属售前顾问免费获取更多行业资料
投诉入口
投诉入口
总裁办24H投诉: 173-127-81526
商务咨询