标签: linear-regression

用于执行线性或非线性最小二乘近似的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
查看次数

如何从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万
查看次数

为什么`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
查看次数

Java中的加权线性回归

有没有人知道Java中的科学/数学库可以直接实现加权线性回归?一个函数行的东西,它接受3个参数并返回相应的系数:

linearRegression(x,y,weights)
Run Code Online (Sandbox Code Playgroud)

这似乎相当简单,所以我想它存在于某个地方.

PS)我已经尝试过Flannigan的图书馆:http://www.ee.ucl.ac.uk/~mflanaga/java/Regression.html ,它有正确的想法,但似乎偶尔崩溃并抱怨我的自由度?

java linear-regression

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

回归与PCA的视觉比较

我正在尝试完善一种比较回归和PCA的方法,其灵感来自博客脑瘫痪,这也是从SO的不同角度进行讨论的.在我忘记之前,非常感谢JD Long和Josh Ulrich的大部分核心.我将在下学期的课程中使用它.对不起,这很长!

更新:我找到了一种几乎可以使用的不同方法(如果可以,请修复它!).我把它贴在了底部.比我能想出的更智能,更简洁的方法!

我基本上遵循了之前的方案,直到某一点:生成随机数据,找出最佳拟合线,绘制残差.这显示在下面的第二个代码块中.但我也在挖掘并编写了一些函数来通过随机点(在这种情况下为数据点)绘制垂直于直线的直线.我认为这些工作正常,它们在First Code Chunk中显示,并且证明它们有效.

现在,第二个代码块使用与@JDLong相同的流程显示整个操作,我正在添加一个结果图的图像.黑色,红色的数据是回归,残差是粉红色,蓝色是第一个PC,浅蓝色应该是法线,但显然它们不是.第一代码块中绘制这些法线的函数似乎很好,但是演示中的某些东西是不正确的:我认为我必须误解某些东西或传递错误的值.我的法线是水平的,这似乎是一个有用的线索(但到目前为止,不是我).有谁能看到这里有什么问题?

谢谢,这让我烦恼了一会儿...... 情节显示问题

第一个代码块(绘制法线和证明它们起作用的函数):

##### The functions below are based very loosely on the citation at the end

pointOnLineNearPoint <- function(Px, Py, slope, intercept) {
    # Px, Py is the point to test, can be a vector.
    # slope, intercept is the line to check distance.

    Ax <- Px-10*diff(range(Px))
    Bx <- Px+10*diff(range(Px))
    Ay <- Ax * slope + intercept
    By <- Bx * slope + intercept
    pointOnLine(Px, Py, Ax, Ay, …
Run Code Online (Sandbox Code Playgroud)

regression r linear-regression pca

9
推荐指数
1
解决办法
2382
查看次数

如何使用R在散点图上创建线性回归线?

我尝试使用abline函数在散点图上创建一个线性回归线.

x= c (1.0325477, 0.6746901, 1.0845737, 1.1123872, 1.1060822, 0.8595918, 0.8512941, 1.0148842, 1.0722369, 0.9019220 , 0.8809147, 1.0358256, 0.9903858, 1.0715174 , 1.1034405, 1.0143966,0.9802365, 0.7177169 , 0.9190783, 0.8408701 ) 
y= c (0.8550177, 0.8352162 ,1.0236998, 1.1071665, 0.6768144, 0.8449983 ,0.7616483, 0.8259199, 1.1539598, 1.4125006, 1.0511816, 0.9366184, 1.4101268, 1.2937913, 1.4147219 ,1.2943105 ,0.7859749, 0.6689330, 0.6940164, 0.8093392)
plot(x,y) 
abline(lm(y ~ x))
Error in int_abline(a = a, b = b, h = h, v = v, untf = untf, ...) : 
 plot.new has not been called yet
Run Code Online (Sandbox Code Playgroud)

请给我任何建议

r linear-regression

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

带有pandas的OLS:日期时间索引作为预测变量

我想使用pandas OLS函数来为我的数据系列拟合趋势线.有谁知道如何使用熊猫系列中的日期时间索引作为OLS中的预测器?

例如,假设我有一个简单的时间序列:

>>> ts
2001-12-31    19.828763
2002-12-31    20.112191
2003-12-31    19.509116
2004-12-31    19.913656
2005-12-31    19.701649
2006-12-31    20.022819
2007-12-31    20.103024
2008-12-31    20.132712
2009-12-31    19.850609
2010-12-31    19.290640
2011-12-31    19.936210
2012-12-31    19.664813
Freq: A-DEC
Run Code Online (Sandbox Code Playgroud)

我想使用索引作为预测器对其进行OLS:

model = pd.ols(y=ts,x=ts.index,intercept=True)
Run Code Online (Sandbox Code Playgroud)

但由于x是日期时间索引的列表,因此该函数返回错误.有人有想法吗?

我可以使用scipy.stats的linregress,但我想知道它是否可能与Pandas.

谢谢,格雷格

python datetime series linear-regression pandas

9
推荐指数
1
解决办法
8580
查看次数

在SciKit线性回归上获得'ValueError:形状未对齐'

一般来说,SciKit和线性代数/机器学习相当新,所以我似乎无法解决以下问题:

我有一套训练集和一组测试数据,包含连续和离散/分类值.CSV文件加载到Pandas DataFrames中并匹配形状,即(1460,81)和(1459,81).但是,在使用Pandas的get_dummies后,DataFrame的形状变为(1460,306)和(1459,294).因此,当我使用SciKit线性回归模块进行线性回归时,它会为306个变量构建一个模型,并尝试使用它来预测一个只有294个变量的模型.这自然会导致以下错误:

ValueError: shapes (1459,294) and (306,1) not aligned: 294 (dim 1) != 306 (dim 0)
Run Code Online (Sandbox Code Playgroud)

我怎么能解决这个问题?我可以以某种方式重塑(1459年,294年)以匹配另一个吗?

谢谢,我希望我已经明确了:)

python machine-learning linear-regression pandas scikit-learn

9
推荐指数
1
解决办法
6000
查看次数

如何从lm结果中获得RMSE?

我知道根均方误差$sigma的概念之间存在细微差别.所以,我想知道在R中获取RMSE 功能的最简单方法是什么?lm

res<-lm(randomData$price ~randomData$carat+
                     randomData$cut+randomData$color+
                     randomData$clarity+randomData$depth+
                     randomData$table+randomData$x+
                     randomData$y+randomData$z)

length(coefficients(res))
Run Code Online (Sandbox Code Playgroud)

包含24个系数,我不能再手动制作我的模型了.那么,我如何根据系数驱动来评估RMSE lm

regression r linear-regression lm

9
推荐指数
3
解决办法
2万
查看次数