标签: linear-regression

Running multiple, simple linear regressions from dataframe in R

I have a dataset (data frame) with 5 columns all containing numeric values.

I'm looking to run a simple linear regression for each pair in the dataset.

For example, If the columns were named A, B, C, D, E, I want to run lm(A~B), lm(A~C), lm(A~D), ...., lm(D~E),... and, then I want to plot the data for each pair along with the regression line.

我对R很陌生,所以我在如何实现这一目标的过程中如何旋转.我应该用ddply吗?还是lapply?我真的不确定如何解决这个问题.

r linear-regression

6
推荐指数
1
解决办法
8697
查看次数

将一组线段近似为一条最佳拟合直线

假设我有一组线段,如这张图片中的红线(或绿线) 示例图片

我想知道如何用最接近它们的线段替换它们。或者您可以建议要搜索的内容,因为这可能是统计中的常见问题。

问题背景:这其实来自于使用OpenCV的概率霍夫变换。我想检测一张纸的角。当我将它应用于图像时,我会在边缘处得到一组线条,我想将这些线条转换为单线连续段。

我想到的一种方法是从直线上取几个点,然后使用直线回归得到直线的方程。一旦我有了它,我应该把它剪成一段。

algorithm statistics opencv image-processing linear-regression

6
推荐指数
1
解决办法
867
查看次数

使用分类变量的 sklearn 线性回归

我正在尝试使用 sk-learn 在 Python 中运行通常的线性回归,但是我有一些我不知道如何处理的分类数据,尤其是因为我使用 Pandas 导入了数据read.csv()并且我从以前的经验和阅读中学到了Pandas 和 sk-learn 相处得不太好(还)。

我的数据如下所示:

Salary  AtBat   Hits    League  EastDivision
475     315     81      1       0
480     479     130     0       0
500     496     141     1       1
Run Code Online (Sandbox Code Playgroud)

我想使用 AtBat、Hits、League 和 EastDivision 预测薪水,其中 League 和 EastDivision 是分类的。

如果我通过 numpy's 导入数据,loadtext()我会得到一个 numpy 数组,理论上我可以与 sklearn 一起使用,但是当我使用 DictVectorizer 时,我得到一个错误。我的代码是:

import numpy as np
from sklearn.feature_extraction import DictVectorizer as DV

nphitters=np.loadtxt('Hitters.csv',delimiter=',', skiprows=1)
vec = DV( sparse = False )
catL=vec.fit_transform(nphitters[:,3:4])
Run Code Online (Sandbox Code Playgroud)

当我运行最后一行catL=vec.fit_transform(nphitters[:,3:4])时出现错误,错误是

Traceback (most recent call …
Run Code Online (Sandbox Code Playgroud)

python linear-regression scikit-learn categorical-data

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

使用的行数已更改:删除缺失值?

我一直在尝试使用 R 对变量进行逐步选择。这是我的代码:

library(lattice)#to get the matrix plot, assuming this package is already installed
library(ftsa) #to get the out-of sample performance metrics, assuming this package is already installed
library(car) 

mydata=read.csv("C:/Users/jgozal1/Desktop/Multivariate Project/Raw data/FINAL_alldata_norowsunder90_subgroups.csv")

names(mydata)
str(mydata)

mydata$country_name=NULL
mydata$country_code=NULL
mydata$year=NULL
mydata$Unemployment.female....of.female.labor.force...modeled.ILO.estimate.=NULL
mydata$Unemployment.male....of.male.labor.force...modeled.ILO.estimate.=NULL
mydata$Life.expectancy.at.birth.male..years.= NULL
mydata$Life.expectancy.at.birth.female..years. = NULL

str(mydata)

Full_model=lm(mydata$Fertility.rate.total..births.per.woman. + mydata$Immunization.DPT....of.children.ages.12.23.months. + mydata$Immunization.measles....of.children.ages.12.23.months. + mydata$Life.expectancy.at.birth.total..years. + mydata$Mortality.rate.under.5..per.1000.live.births. + mydata$Improved.sanitation.facilities....of.population.with.access. ~ mydata$Primary.completion.rate.female....of.relevant.age.group. + mydata$School.enrollment.primary....gross. + mydata$School.enrollment.secondary....gross. + mydata$School.enrollment.tertiary....gross. + mydata$Internet.users..per.100.people. + mydata$Primary.completion.rate.male....of.relevant.age.group. + mydata$Mobile.cellular.subscriptions..per.100.people. + mydata$Foreign.direct.investment.net.inflows..BoP.current.US.. + mydata$Unemployment.total....of.total.labor.force...modeled.ILO.estimate., data= mydata)

summary(Full_model) #this provides the …
Run Code Online (Sandbox Code Playgroud)

r linear-regression

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

如何使用 ggplot2 绘制“分段”包的结果?

我按照以下步骤绘制了带有一个断点的分段线性回归的结果,这是我通过segmented包完成的:

lin.mod <- lm(ChH~CL)
segmented.mod <- segmented(lin.mod, seg.Z=~CL)
data1 <- data.frame(x = CL, y = ChH)
data2 <- data.frame(x = CL, y = broken.line(segmented.mod)$fit)
ggplot(data1, aes(x = CL, y = ChH)) + 
  geom_point() +
  geom_line(data = data2, color = 'blue')
Run Code Online (Sandbox Code Playgroud)

我得到这个图,它不显示带有断点的两行!我应该如何更改代码才能获得正确的绘图?

这是我的数据集:(ChH 有 11 个缺失数据)

CL <- c(9.26, 9.38, 9.41, 9.44, 9.52, 9.58, 9.74, 9.91, 10.03, 10.22, 
10.23, 10.4, 10.92, 11.15, 11.38, 11.77, 11.79, 12, 12.45, 12.5, 
12.54, 12.79, 12.98, 13.04, 13.04, 13.54, 14.26, 14.33, 14.4, 
14.56, 14.77, …
Run Code Online (Sandbox Code Playgroud)

plot r linear-regression ggplot2 piecewise

6
推荐指数
1
解决办法
4499
查看次数

scipy linregress的多变量线性回归

我正在尝试训练一个非常简单的线性回归模型。

我的代码是:

from scipy import stats

xs = [[   0,    1,  153]
 [   1,    2,    0]
 [   2,    3,  125]
 [   3,    1,   93]
 [   2,   24, 5851]
 [   3,    1,  524]
 [   4,    1,    0]
 [   2,    3,    0]
 [   2,    1,    0]
 [   5,    1,    0]]

ys = [1, 1, 1, 1, 1, 0, 1, 1, 0, 1]

slope, intercept, r_value, p_value, std_err = stats.linregress(xs, ys)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/scipy/stats/stats.py", line 3100, in linregress
ssxm, ssxym, ssyxm, ssym = …
Run Code Online (Sandbox Code Playgroud)

python scipy linear-regression

6
推荐指数
1
解决办法
2858
查看次数

Pandas DataFrame-使用OLS /线性回归时,“无法从[datetime64 [ns]]到[float64]分配日期时间”

我有一个DataFrame如下:

   Ticker        Date  Close
0    ADBE  2016-02-16  78.88
1    ADBE  2016-02-17  81.85
2    ADBE  2016-02-18  80.53
3    ADBE  2016-02-19  80.87
4    ADBE  2016-02-22  83.80
5    ADBE  2016-02-23  83.07
Run Code Online (Sandbox Code Playgroud)

...等等。该Date列是问题。我正在尝试使用Date列获取列的线性回归Close

ols1 = pd.ols(y=ADBE['Close'], x=ADBE['Date'], intercept=True)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

TypeError: cannot astype a datetimelike from [datetime64[ns]] to [float64]
Run Code Online (Sandbox Code Playgroud)

我尝试了多种方法来消除此错误,例如:

dates_input = ADBE['Date'].values.astype('datetime64[D]')

dates_input = ADBE['Date'].values.astype('float')
Run Code Online (Sandbox Code Playgroud)

第二次dates_input尝试返回的类型为,pandas.core.series.Series但是我仍然收到错误消息。

有谁知道如何使Date列工作并摆脱此TypeError?

python time-series linear-regression dataframe pandas

6
推荐指数
1
解决办法
7048
查看次数

julia 中的多项式回归 - glm

是否可以在 Julia 的 GLM 包中进行多项式回归?考虑到与 R 语法的相似性,我希望

 fit(LinearModel, @formula(y ~ poly(x,5)), dataset)
Run Code Online (Sandbox Code Playgroud)

会起作用(用于拟合 5 次多项式)。它不是。

statistics linear-regression julia

6
推荐指数
2
解决办法
2543
查看次数

用于拟合具有两条线的曲线的亚二次算法

问题是找到具有两条线组成的折线的实值二维曲线(由点集给出)的最佳拟合。

一种蛮力方法是为曲线的每个点找到“左”和“右”线性拟合,并选择误差最小的对。我可以在迭代曲线的点时增量计算两个线性拟合,但我找不到增量计算误差的方法。因此,这种方法产生二次复杂度。

问题是是否有一种算法可以提供次二次复杂度?

第二个问题是是否有用于此类算法的方便的 C++ 库?


编辑 对于单线拟合,有公式:

m = (?xiyi - ?xi?yi/N) / (?xi2 - (?xi)2/N)
b = ?yi/N - m * ?xi/N
Run Code Online (Sandbox Code Playgroud)

其中m是斜率,b是线的偏移量。拥有这样一个拟合误差公式可以以最好的方式解决问题。

c++ algorithm curve-fitting linear-regression

6
推荐指数
1
解决办法
156
查看次数

R 中使用 lm() 和 svyglm() 的加权线性回归。相同的模型,不同的结果

我想在 R studio 中应用调查权重进行线性回归。我已经看到可以使用该lm()函数来做到这一点,这使我能够指定我想要使用的权重。然而,也可以使用该函数来执行此svyglm()操作,该函数对调查设计对象中已按所需变量加权的变量进行回归。

从理论上讲,我认为这两个回归模型的结果没有理由不同,而且 beta 估计值是相同的。然而,每个模型中的标准误不同,导致不同的 p 值,从而导致不同的显着性水平。

哪种型号最合适?任何帮助将不胜感激。

这是 R 代码:

dat <- read.csv("https://raw.githubusercontent.com/LucasTremlett/questions/master/questiondata.csv")
model.weighted1 <-  lm(DV~IV1+IV2+IV3, data=dat, weights = weight)
summary(model.weighted1)
dat.weighted<- svydesign(ids = ~1, data = dat, weights = dat$weight)
model.weighted2<- svyglm(DV~IV1+IV2+IV3, design=dat.weighted)
summary(model.weighted2)
Run Code Online (Sandbox Code Playgroud)

r survey linear-regression weighted

6
推荐指数
1
解决办法
3611
查看次数