标签: linear-regression

数据框中变量之间的快速成对简单线性回归

我已经在Stack Overflow上多次看到成对或一般配对的简单线性回归.这是一个针对此类问题的玩具数据集.

set.seed(0)
X <- matrix(runif(100), 100, 5, dimnames = list(1:100, LETTERS[1:5]))
b <- c(1, 0.7, 1.3, 2.9, -2)
dat <- X * b[col(X)] + matrix(rnorm(100 * 5, 0, 0.1), 100, 5)
dat <- as.data.frame(dat)
pairs(dat)
Run Code Online (Sandbox Code Playgroud)

所以基本上我们想要计算5*4 = 20个回归线:

-----  A ~ B  A ~ C  A ~ D  A ~ E
B ~ A  -----  B ~ C  B ~ D  B ~ E
C ~ A  C ~ B  -----  C ~ D  C ~ E
D ~ …
Run Code Online (Sandbox Code Playgroud)

performance regression r linear-regression lm

11
推荐指数
1
解决办法
2680
查看次数

将Numpy Lstsq残差值转换为R ^ 2

我正在执行如下所示的最小二乘回归(单变量).我想用R ^ 2来表达结果的重要性.Numpy返回一个未缩放残差的值,这将是一种正常化的合理方法.

field_clean,back_clean = rid_zeros(backscatter,field_data)
num_vals = len(field_clean)
x = field_clean[:,row:row+1]
y = 10*log10(back_clean)

A = hstack([x, ones((num_vals,1))])
soln = lstsq(A, y )
m, c =  soln [0]
residues = soln [1]

print residues
Run Code Online (Sandbox Code Playgroud)

python numpy linear-regression

10
推荐指数
1
解决办法
9210
查看次数

用于执行线性或非线性最小二乘近似的Ruby库?

是否有Ruby库允许我对一组数据进行线性或非线性最小二乘近似.

我想做的是以下内容:

  • 给定一系列[x,y]数据点
  • 生成针对该数据的线性或非线性最小二乘近似
  • 该库不需要弄清楚它是否需要进行线性或非线性近似.图书馆的来电者应该知道他们需要什么类型的回归

我不想尝试移植一些C/C++/Java库来获得这个功能,所以我希望有一些我可以使用的现有Ruby库.

ruby linear-regression least-squares

10
推荐指数
2
解决办法
2305
查看次数

如何将复杂的方程式放入R公式中?

我们将树的直径作为预测因子,树高作为因变量.对于这种数据存在许多不同的方程式,我们尝试对其中的一些进行建模并比较结果.

但是,我们无法弄清楚如何正确地将一个方程式放入相应的R formula格式中.

trees数据组中R,可以使用,例如,

data(trees)
df <- trees
df$h <- df$Height * 0.3048   #transform to metric system
df$dbh <- (trees$Girth * 0.3048) / pi   #transform tree girth to diameter
Run Code Online (Sandbox Code Playgroud)

首先,似乎运作良好的等式的例子:

在此输入图像描述

form1 <- h ~ I(dbh ^ -1) + I( dbh ^ 2)  
m1 <- lm(form1, data = df)
m1

Call:
lm(formula = form1, data = df)

Coefficients:
(Intercept)    I(dbh^-1)     I(dbh^2)  
27.1147      -5.0553       0.1124  
Run Code Online (Sandbox Code Playgroud)

系数a,bc估计,这是我们感兴趣的.

现在有问题的等式:

在此输入图像描述

试着像这样适合它:

form2 <- …
Run Code Online (Sandbox Code Playgroud)

statistics regression r data-modeling linear-regression

10
推荐指数
3
解决办法
5681
查看次数

如何进行线性回归,将误码率考虑在内?

我正在为一些有限大小的物理系统进行计算机模拟,之后我正在对无穷大进行外推(热力学极限).一些理论认为数据应该随着系统规模线性扩展,所以我做的是线性回归.

我的数据有噪音,但对于每个数据点,我可以估算出错误.因此,例如数据点看起来像:

x_list = [0.3333333333333333, 0.2886751345948129, 0.25, 0.23570226039551587, 0.22360679774997896, 0.20412414523193154, 0.2, 0.16666666666666666]
y_list = [0.13250359351851854, 0.12098339583333334, 0.12398501145833334, 0.09152715, 0.11167239583333334, 0.10876248333333333, 0.09814170444444444, 0.08560799305555555]
y_err = [0.003306749165349316, 0.003818446389148108, 0.0056036878203831785, 0.0036635292592592595, 0.0037034897788415424, 0.007576672222222223, 0.002981084130692832, 0.0034913019065973983]
Run Code Online (Sandbox Code Playgroud)

假设我试图在Python中执行此操作.

  1. 我知道的第一种方式是:

    m, c, r_value, p_value, std_err = scipy.stats.linregress(x_list, y_list)
    
    Run Code Online (Sandbox Code Playgroud)

    我理解这给了我结果的错误栏,但这没有考虑初始数据的错误栏.

  2. 我知道的第二种方式是:

    m, c = numpy.polynomial.polynomial.polyfit(x_list, y_list, 1, w = [1.0 / ty for ty in y_err], full=False)
    
    Run Code Online (Sandbox Code Playgroud)

这里我们使用每个点的误差条的倒数作为在最小二乘近似中使用的权重.因此,如果一个点不是那么可靠,那么它不会对结果造成太大影响,这是合理的.

但我无法弄清楚如何获得结合这两种方法的东西.

我真正想要的是第二种方法的作用,意思是当每个点都影响不同权重的结果时使用回归.但与此同时,我想知道我的结果有多准确,这意味着,我想知道结果系数的误码是什么.

我怎样才能做到这一点?

python numpy linear-regression least-squares extrapolation

10
推荐指数
1
解决办法
1万
查看次数

Apache Spark不如Scikit Learn准确吗?

我最近一直试图了解Apache Spark作为Scikit Learn的替代品,但在我看来,即使在简单的情况下,Scikit也会比Spark更快地收敛到精确模型.例如,我使用以下脚本为非常简单的线性函数(z = x + y)生成了1000个数据点:

from random import random

def func(in_vals):
    '''result = x (+y+z+w....)'''
    result = 0
    for v in in_vals:
        result += v
    return result

if __name__ == "__main__":
    entry_count = 1000
    dim_count = 2
    in_vals = [0]*dim_count
    with open("data_yequalsx.csv", "w") as out_file:
        for entry in range(entry_count):
            for i in range(dim_count):
                in_vals[i] = random()
            out_val = func(in_vals)
            out_file.write(','.join([str(x) for x in in_vals]))
            out_file.write(",%s\n" % str(out_val))
Run Code Online (Sandbox Code Playgroud)

然后我运行了以下Scikit脚本:

import sklearn
from sklearn import linear_model

import numpy as np …
Run Code Online (Sandbox Code Playgroud)

machine-learning linear-regression scikit-learn apache-spark

10
推荐指数
1
解决办法
3549
查看次数

如何在Spark Scala中从多个数组创建DataFrame?

val tvalues: Array[Double] = Array(1.866393526974307, 2.864048126935307, 4.032486069215076, 7.876169953355888, 4.875333799256043, 14.316322626848278)
val pvalues: Array[Double] = Array(0.064020056478447, 0.004808399479386827, 8.914865448939047E-5, 7.489564524121306E-13, 2.8363794106756046E-6, 0.0)
Run Code Online (Sandbox Code Playgroud)

我有两个如上所述的数组,我需要从这个数组构建一个DataFrame,如下所示,

Tvalues                Pvalues
1.866393526974307      0.064020056478447
2.864048126935307      0.004808399479386827
......                 .....
Run Code Online (Sandbox Code Playgroud)

截至目前我StringBuilder在Scala 尝试.没有按预期进行.请帮帮我.

arrays scala linear-regression spark-dataframe

10
推荐指数
1
解决办法
2万
查看次数

如何从Python中的OLSResults获取变量中的P值?

OLSResults of

df2 = pd.read_csv("MultipleRegression.csv")
X = df2[['Distance', 'CarrierNum', 'Day', 'DayOfBooking']]
Y = df2['Price']
X = add_constant(X)
fit = sm.OLS(Y, X).fit()
print(fit.summary())
Run Code Online (Sandbox Code Playgroud)

将每个属性的P值显示为仅3个小数位.

我需要为每个属性提取p值等Distance,CarrierNum并以科学计数法打印出来.

余可使用提取的系数fit.params[0]fit.params[1]

需要获得所有P值.

所有P值为0的意思是什么?

python linear-regression statsmodels

10
推荐指数
2
解决办法
1万
查看次数

Seaborn:注释线性回归方程

我尝试为波士顿数据集安装OLS.我的图表如下所示.

如何在线上方或图中某处注释线性回归方程?如何在Python中打印方程式?

我是这个领域的新手.到目前为止探索python.如果有人可以帮助我,它会加快我的学习曲线.

非常感谢!

OLS合身

我也尝试过这个.

在此输入图像描述

我的问题是 - 如何在方程式格式中对图中的上述进行注释?

python matplotlib linear-regression python-3.x seaborn

10
推荐指数
2
解决办法
8297
查看次数

为什么`sklearn`和`statsmodels`实现OLS回归会给出不同的R ^ 2?

我意外地注意到,当不适合拦截时,OLS模型由R ^ 2 实现sklearnstatsmodels产生不同的R ^ 2值.否则他们似乎工作正常.以下代码产生:

import numpy as np
import sklearn
import statsmodels
import sklearn.linear_model as sl
import statsmodels.api as sm

np.random.seed(42)

N=1000
X = np.random.normal(loc=1, size=(N, 1))
Y = 2 * X.flatten() + 4 + np.random.normal(size=N)

sklernIntercept=sl.LinearRegression(fit_intercept=True).fit(X, Y)
sklernNoIntercept=sl.LinearRegression(fit_intercept=False).fit(X, Y)
statsmodelsIntercept = sm.OLS(Y, sm.add_constant(X))
statsmodelsNoIntercept = sm.OLS(Y, X)

print(sklernIntercept.score(X, Y), statsmodelsIntercept.fit().rsquared)
print(sklernNoIntercept.score(X, Y), statsmodelsNoIntercept.fit().rsquared)

print(sklearn.__version__, statsmodels.__version__)
Run Code Online (Sandbox Code Playgroud)

打印:

0.78741906105 0.78741906105
-0.950825182861 0.783154483028
0.19.1 0.8.0
Run Code Online (Sandbox Code Playgroud)

差异来自哪里?

问题不同于不同的线性回归系数与statsmodels和sklearn,因为那里sklearn.linear_model.LinearModel(有截距)适合X准备的statsmodels.api.OLS.

问题不同于 Statsmodels:计算拟合值和R平方, 因为它解决了两个Python包( …

python linear-regression python-3.x scikit-learn statsmodels

10
推荐指数
1
解决办法
1299
查看次数