如何获得趋势的标准化斜率

时间:2019-03-21 07:37:04

标签: math machine-learning statistics time-series data-science

我正在分析社交网络中超过6周的用户到userx的距离。

注意:“无路径”表示两个用户尚未连接(至少是由朋友的朋友)。

              week1      week2    week3    week4    week5   week6
user1        No path    No path  No path   No path   3       1
user2        No path    No path  No path     5       3       1
user3         5          4         4         4       4       3
userN         ...

我想看看用户与userx的联系程度。

为此,我最初考虑使用回归斜率的值进行解释(即回归斜率越低越好)。

例如;考虑user1user2的回归斜率计算如下。

用户1:

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
X = [[5], [6]] #distance available only for week5 and week6
y = [3, 1]
regressor.fit(X, y)
print(regressor.coef_)

输出为-2.

用户2:

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
X = [[4], [5], [6]] #distance available only for week4, week5 and week6
y = [5, 3, 1]
regressor.fit(X, y)
print(regressor.coef_)

输出为-2.

您会看到两个用户都获得了相同的slope值。但是,user2userx之前一周已与user1连接。因此,应该以某种方式授予user1

因此,我想知道是否有更好的方法来计算我的问题。

很高兴在需要时提供更多详细信息。

1 个答案:

答案 0 :(得分:1)

好吧,如果您想奖励连接持续时间,则可能需要花一些时间进行计算。最简单/最直接的方法就是将系数乘以时间:

outcome_measure <- regressor.coef_ * length(y)

如果将其除以2,则其在概念上将与曲线下的面积(AUC)相同:

outcome_measure <- (regressor.coef_ * length(y))/2

因此,第一种方法将得到-4和-6,第二种方法将得到-2和-3。

有点偏离主题,但是如果您使用线性回归进行统计分析(不仅是为了获得系数),我可能会添加某种检查以确认其假设正确。