首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从数据集中提取线性趋势

从数据集中提取线性趋势
EN

Data Science用户
提问于 2021-11-02 14:12:04
回答 2查看 41关注 0票数 2

考虑一个传感器测量f,它随温度T和被测流体的性质而变化。每天的温度变化和流体特性可以假定变化较少。如果我在Excel中交叉绘制数据,那么通过眼睛,我可以很容易地画出一条直线穿过某些点,然后水平地翻译这条线,而“瞧”这条直线正好适合于其他图形簇。因此,如果这条线有斜率-1/a,那么我所要做的不是绘制f与时间的关系,而是绘制f+a相对于时间的曲线,它没有温度依赖性,现在是流体性质的指示。凉爽的。

因此,我的问题是如何自动提取a。我今天的计划是将目标函数设置为时间序列的导数的L1范数,并在a上最小化,这可能会给出一个具有几乎零导数和几个跳跃不连续点的时间序列,从而确定流体已经改变了而不是L2,它会抹黑所有的东西。

但我的想法是,这种特征提取可能已经在某个地方的教科书中讨论过了,我真正缺少的是查找它的更好的词汇表:-)

有什么建议吗?谢谢

EN

回答 2

Data Science用户

发布于 2021-11-03 19:09:21

好吧,我对此很满意。我定义一个“神经元”为2/piarctan(lambda(日期- date0 )),它有大约99个神经元,date0稳步增加。如果我把任何时间序列写成这些神经元的总和,那就有效地创造了一个平滑的,分段的常数逼近时间序列,这就是我想要的。因此,我在这些神经元中添加一个额外的“神经元”,这是测量温度的数据,给我100个神经元,然后进行简单的L2优化,以找到所有神经元中的最佳拟合值。

票数 1
EN

Data Science用户

发布于 2021-11-02 15:02:58

如果您可以将这些属性视为离散变量(也称为“假人”、“因素”、“一个热的”),则可以使用线性回归来分解效果。那就是。您为每个属性估计一条“直线”。

代码语言:javascript
运行
复制
# Data
df = data.frame(y=c(1,2,3,5,6, 10,12,13,15,16),prop=c(0,0,0,0,0,1,1,1,1,1),temp=c(5,6,7,8,9,6,7,8,9,10))

# Plot data
plot(dftemp[df#qcStackCode#prop==1], dfy[df#qcStackCode#prop==1],xlim=c(4,10),ylim=c(0,16),xlab="temp",ylab="y")
lines(dftemp[df#qcStackCode#prop==1], dfy[df#qcStackCode#prop==1])
lines(dftemp[df#qcStackCode#prop==0], dfy[df#qcStackCode#prop==0], col="blue")
代码语言:javascript
运行
复制
# Linear regression
reg = lm(y~temp+prop,data=df)
summary(reg)


Residuals:
   Min     1Q Median     3Q    Max 
  -0.4   -0.2    0.0    0.2    0.4 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -6.40000    0.55032  -11.63 7.85e-06 ***
temp         1.40000    0.07559   18.52 3.32e-07 ***
prop         8.40000    0.22678   37.04 2.72e-09 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3381 on 7 degrees of freedom
Multiple R-squared:  0.9971,    Adjusted R-squared:  0.9963 
F-statistic:  1222 on 2 and 7 DF,  p-value: 1.245e-09


# Prediction for "prop" 1, 0
pred0 = predict(reg,newdata=df[dfprop==0,])
pred1 = predict(reg,newdata=df[df#qcStackCode#prop==1,])

# Add prediction to plot
lines(dftemp[df#qcStackCode#prop==1], pred1, col="red")
lines(dftemp[df#qcStackCode#prop==0], pred0, col="purple")

因此,您可以得到一个“预测线”每prop

对于prop=0,这将像-6.4 + 1.4 * temp + 0 * 8.4那样计算。

对于prop=1,这将像-6.4 + 1.4 * temp + 1 * 8.4那样计算。

本质上:相同的截距和斜率。根据prop指示器,只有线条的"niveau“被移动。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/103737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档