我正在分析社交网络中超过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
的连接程度如何。为此,我最初考虑使用回归斜率的值进行解释(即回归斜率越低越好)。
例如;考虑
user1
和user2
它们的回归斜率计算如下。用户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
值。但是,user2
在userx
之前一周已与user1
连接。因此,应该以某种方式授予user1
。因此,我想知道是否有更好的方法来计算我的问题。
如果需要,我很乐意提供更多详细信息。
最佳答案
好吧,如果您想奖励连接持续时间,则可能需要花一些时间进行计算。最简单/最直接的方法是将系数乘以时间:
outcome_measure <- regressor.coef_ * length(y)
如果将其除以2,则其在概念上将与曲线下的面积(AUC)相同:
outcome_measure <- (regressor.coef_ * length(y))/2
因此,第一种方法将得到-4和-6,第二种方法将得到-2和-3。
有点偏离主题,但是如果您使用线性回归进行统计分析(不仅仅是为了获得系数),我可能会添加某种检查以确认其假设是正确的。
关于math - 如何获得趋势的标准化斜率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55275661/