【问题标题】:Obtaining Polynomial Regression Stats in Numpy在 Numpy 中获取多项式回归统计信息
【发布时间】:2016-08-07 16:22:07
【问题描述】:

我希望在 Numpy 中使用多项式回归 (polyfit) 来获取系数和截距,但我不确定如何编写脚本来获取多项式函数。

我已经将代码作为线性回归的代码,我附在下面:

import matplotlib.pyplot as plt
import sys
from numpy import *
import numpy as np
import numpy.polynomial.polynomial as poly
import pylab
from scipy import stats
from scipy.interpolate import *
from datetime import datetime, timedelta

#Open dataset1,dataset2 data

data1 = np.loadtxt('/home/script/2_columns', delimiter=',', skiprows=0)

data2 = np.loadtxt('/home/script/2_columns_a', delimiter=',', skiprows=0)

#Define first column as dataset1

#Define second column as dataset2

x = data1[:,0]
y = data1[:,1]

#The stuff...
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)

【问题讨论】:

    标签: python numpy scipy polynomials


    【解决方案1】:

    您需要统计数据吗?如果没有,你只需要系数,使用numpy.polyfit 真的很简单:

    import numpy as np
    
    # from your code
    data1 = np.loadtxt('/home/script/2_columns', delimiter=',', skiprows=0)
    
    x = data1[:,0]
    y = data1[:,1]
    
    degree = 3
    coeffs = np.polyfit(x, y, degree)
    
    # now, coeffs is an array which contains the polynomial coefficients
    # in ascending order, i.e. x^0, x^1, x^2
    intercept, linear, quadratic, cubic = coeffs
    

    如果您确实需要其他值,请指定您需要的值,因为例如r_valuexy 之间的相关系数,当您不期望数据是线性的。

    【讨论】:

    • 非常感谢,比我想象的要简单得多!我实际上也需要统计数据,所以我可以从回归中检查 r 平方值。我会像上面那样将 r_value 添加到您的等式中吗?
    • @E.Weglarz 不,这些必须单独计算。但是,如果您不适合直线,则 r 平方并不意味着任何有用的东西,至少没有我能想到的任何东西(它只是衡量 “我的数据有多线性” )。您可以使用的一个常见拟合优度统计量是 chi2 值。
    • 我能得到的几乎所有值(包括 r_squared)的读数都是完美的!
    猜你喜欢
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    相关资源
    最近更新 更多