对于具有1个变量和一个截距的线性回归,我可以将R方计算为-
R^2 = (np.sum(((x - np.mean(x)) / np.std(x, ddof=1)) * ((y - np.mean(y)) / np.std(y, ddof=1))) / (len(x) - 1)) ** 2
字符串
如何计算线性回归的R平方,其中有1个变量,没有截距,并且不必处理statsmodels.api
OLS或linregress
或任何第三方软件包。np.mean(y) = 0
表示无截距的线性回归的理解是否正确?
在numpy中获得1个变量且无截距的线性回归的R方的最快方法是什么?
3条答案
按热度按时间z8dt9xmd1#
在一个变量没有截距的情况下,你可以很容易地做到:
字符串
在矩阵符号中,这可以写成
型
举例来说:
型
注意,两者是等价的
您可以扩展上述内容以包含多个变量:
型
xvw2m8pv2#
对于普通最小二乘(OLS),我们可以使用标准形式公式简明地求解一元线性回归,
的数据
我们可以在NumPy中使用X和y的列向量来实现这一点:
字符串
上面,我使用
@
运算符进行矩阵乘法。y_hat
存储每个X坐标的线性回归的y坐标。然后可以使用平方和公式计算R²:型
上面,我使用向量内积来更简洁地写出平方和,因为对向量
v
的平方求和与转置v
并将其乘以自身是相同的。这将计算回归的R²(存储在1x1NumPy矩阵中),其斜率存储在
w
中(表示为1x1NumPy矩阵)。plicqrtu3#
你可以计算r平方而不需要截距
字符串