我正在搜索John Tukey算法,该算法使用R进行线性回归计算"抗性线"或"中位数线".
列表中的学生用以下术语解释此算法:
"它的计算方法是将数据分成三组,找到每组的x中位数和y中位数值(称为汇总点),然后使用这三个汇总点来确定该线.外部两个汇总点确定斜率,所有点的平均值决定了截距."
关于约翰·图基的好奇心中位数的文章:http://www.johndcook.com/blog/2009/06/23/tukey-median-ninther/
你知道我在哪里可以找到这个算法或R函数吗?在哪个包中,非常感谢!
我在R中有一个线性模型
set.seed(1234)
x <- rnorm(100)
z <- rnorm(100)
y <- rnorm(100, x+z)
mydata <- data.frame(x,y,z)
fit <- lm(y ~ x + z, mydata)
Run Code Online (Sandbox Code Playgroud)
我想获得样本r-square的估计值.我正在考虑使用某种形式的k-fold交叉验证.
我需要获得类似于以下链接中的excel函数实现方式的线性回归:
http://office.microsoft.com/en-gb/excel-help/slope-function-HP010342903.aspx
Run Code Online (Sandbox Code Playgroud)
是否有一个C++库或一个人创建的简单编码解决方案可以做到这一点?我已经根据这个公式实现了代码,但它并不总能给我正确的结果(取自这里http://easycalculation.com/statistics/learn-regression.php)....
Slope(b) = (N?XY - (?X)(?Y)) / (N?X2 - (?X)2)
= ((5)*(1159.7)-(311)*(18.6))/((5)*(19359)-(311)2)
= (5798.5 - 5784.6)/(96795 - 96721)
= 13.9/74
= 0.19
Run Code Online (Sandbox Code Playgroud)
如果我对下面的向量进行尝试,我会得到错误的结果(我应该期待0.305556):x = 6,5,11,7,5,4,4 y = 2,3,9,1,8,7 ,5
提前致谢
这段代码将返回系数:intercept,slop1,slop2
set.seed(1)
n=10
y=rnorm(n)
x1=rnorm(n)
x2=rnorm(n)
lm.ft=function(y,x1,x2)
return(lm(y~x1+x2)$coef)
res=list();
for(i in 1:n){
x1.bar=x1-x1[i]
x2.bar=x2-x2[i]
res[[i]]=lm.ft(y,x1.bar,x2.bar)
}
Run Code Online (Sandbox Code Playgroud)
如果我输入:
> res[[1]]
Run Code Online (Sandbox Code Playgroud)
我明白了:
(Intercept) x1 x2
-0.44803887 0.06398476 -0.62798646
Run Code Online (Sandbox Code Playgroud)
我们如何返回预测值,残差,R square,..等?
我需要一些通用的东西从摘要中提取我需要的东西?
我pandas.stats.api.ols使用groupby带有以下代码的运行OLS回归:
from pandas.stats.api import ols
df=pd.read_csv(r'F:\file.csv')
result=df.groupby(['FID']).apply(lambda d: ols(y=d.loc[:, 'MEAN'], x=d.loc[:, ['Accum_Prcp', 'Accum_HDD']]))
for i in result:
x=pd.DataFrame({'FID':i.index, 'delete':i.values})
frame = pd.concat([x,DataFrame(x['delete'].tolist())], axis=1, join='outer')
del frame['delete']
print frame
Run Code Online (Sandbox Code Playgroud)
但是这会返回错误:
AttributeError: 'OLS' object has no attribute 'index'
Run Code Online (Sandbox Code Playgroud)
我的组中有大约2,000个项目,当我打印出每个项目时,它们看起来像这样:
-
------------------------Summary of Regression Analysis-------------------------
Formula: Y ~ <Accum_Prcp> + <Accum_HDD> + <intercept>
Number of Observations: 79
Number of Degrees of Freedom: 3
R-squared: 0.1242
Adj R-squared: 0.1012
Rmse: 0.1929
F-stat (2, 76): 5.3890, p-value: 0.0065
Degrees of Freedom: …Run Code Online (Sandbox Code Playgroud) 我想在 R 中绘制一条简单的回归线。我已经输入了数据,但回归线似乎不正确。有人可以帮忙吗?
x <- c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120)
y <- c(10, 18, 25, 29, 30, 28, 25, 22, 18, 15, 11, 8)
df <- data.frame(x,y)
plot(y,x)
abline(lm(y ~ x))
Run Code Online (Sandbox Code Playgroud)
我目前正在数据集上运行多元线性回归。起初,我没有意识到我需要限制我的体重;事实上,我需要有特定的正负权重。
更准确地说,我正在做一个评分系统,这就是为什么我的一些变量应该对笔记产生积极或消极的影响。然而,在运行我的模型时,结果不符合我的预期,我的一些“正”变量得到负系数,反之亦然。
例如,假设我的模型是:
y = W0*x0 + W1*x1 + W2*x2
Run Code Online (Sandbox Code Playgroud)
其中 x2 是一个“正”变量,我想将 W2 的约束设为正值!
我一直在寻找关于这个问题的很多东西,但我没有发现任何关于特定权重/系数的约束,我发现的只是将所有系数设置为正数或将它们相加为一。
我正在使用 ScikitLearn 包研究 Python。这就是我获得最佳模型的方式:
def ridge(Xtrain, Xtest, Ytrain, Ytest, position):
param_grid={'alpha':[0.01 , 0.1, 1, 10, 50, 100, 1000]}
gs = grid_search.GridSearchCV(Ridge(), param_grid=param_grid, n_jobs=-1, cv=3)
gs.fit(Xtrain, Ytrain)
hatytrain = gs.predict(Xtrain)
hatytest = gs.predict(Xtest)
Run Code Online (Sandbox Code Playgroud)
知道如何为特定变量的系数分配约束吗?定义每个约束可能会很麻烦,但我不知道该怎么做。
python constraints machine-learning linear-regression scikit-learn
我正在对时间序列数据执行组件明智的回归。这基本上是在那里的,而不是倒退Ÿ对X 1,X 2,...,X ñ,我们会回归Ÿ对X 1只,对x和y 2只,...,并采取减少的总和回归平方残差最多,并将其添加为基础学习器。这被重复 M 次,这样最终模型是许多形式 y 与 x i(仅 1 个外生变量)的简单线性回归的总和,基本上是使用线性回归作为基础学习器的梯度提升。
问题是,由于我正在对时间序列数据执行滚动窗口回归,因此我必须进行 N × M × T 回归,这超过一百万个 OLS。虽然每个 OLS 都非常快,但在我性能较弱的笔记本电脑上运行需要几个小时。
目前,我正在使用statsmodels.OLS.fit()这样的方式来获取每个 y 的参数,而不是 x i线性回归。的z_matrix是数据矩阵和i表示第i个列片的回归。行数约为 100,z_matrix大小约为 100 × 500。
ols_model = sm.OLS(endog=endog, exog=self.z_matrix[:, i][..., None]).fit()
return ols_model.params, ols_model.ssr, ols_model.fittedvalues[..., None]
Run Code Online (Sandbox Code Playgroud)
我从 2016 年的上一篇文章中阅读了在 python 中计算许多回归的最快方法?使用重复调用 statsmodels 效率不高,我尝试了建议 numpy 的答案之一,但pinv不幸的是速度较慢:
# slower: 40sec vs 30sec for …Run Code Online (Sandbox Code Playgroud) 我有个问题。当我从“statsmodels.stats.outliers_influence”导入“variance_inflation_factor”时,出现“模块“numpy”没有属性“MachAr””错误,原因是什么?
我曾经在一个项目中执行过这段代码,它工作没有任何问题,但它在后续项目中给出了这个错误
machine-learning linear-regression deep-learning jupyter-notebook
我Ridge().fit(X_train, y_train)在数据集上使用时遇到了 RuntimeWarning,其中X_train.shape = (9440, 1900)
/Users/username/micromamba/envs/data-science/lib/python3.11/site-packages/sklearn/utils/extmath.py:189: RuntimeWarning: invalid value encountered in matmul
ret = a @ b
Run Code Online (Sandbox Code Playgroud)
当我减小数据集的大小时,X_train.shape = (1000, 1900)运行时警告就会消失。
可能是什么原因导致此警告以及如何避免它?我确保没有 np.nan、np.inf 和 -np.inf。
python ×4
r ×4
regression ×3
numpy ×2
scikit-learn ×2
statsmodels ×2
algorithm ×1
c++ ×1
constraints ×1
csv ×1
function ×1
lm ×1
math ×1
pandas ×1
plot ×1
testing ×1