标签: lm

找出两个线性拟合在R中相交的位置

我有两个线性拟合,我从我的R脚本中的lm调用中获得.例如...

fit1 <- lm(y1 ~ x1)
fit2 <- lm(y2 ~ x2)
Run Code Online (Sandbox Code Playgroud)

我想找到这两条线(fit1fit2)相交的(x,y)点,如果它们相交的话.

intersection r lm

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

R计算具有奇点的lm模型的鲁棒标准误差(vcovHC)

在R中,当一些系数由于奇点而被丢弃时,如何使用vcovHC()计算稳健的标准误差?标准的lm函数似乎可以很好地计算实际估计的所有系数的正常标准误差,但vcovHC()会抛出一个错误:"面包错误.%*%肉.:不一致的参数".

(我使用的实际数据有点复杂.事实上,它是一个使用两种不同固定效果的模型,我遇到局部奇点,我不能简单地摆脱它.至少我不知道如何.对于两个固定效应我使用第一个因子有150个级别,第二个有142个级别,总共有九个奇点,这是因为数据是在十个块中收集的.)

这是我的输出:

Call:
lm(formula = one ~ two + three + Jan + Feb + Mar + Apr + May + 
Jun + Jul + Aug + Sep + Oct + Nov + Dec, data = dat)

Residuals:
    Min      1Q  Median      3Q     Max 
-130.12  -60.95    0.08   61.05  137.35 

Coefficients: (1 not defined because of singularities)
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) 1169.74313   57.36807  20.390   <2e-16 ***
two           -0.07963    0.06720  -1.185    0.237    
three         -0.04053    0.06686  -0.606    0.545    
Jan            8.10336 …
Run Code Online (Sandbox Code Playgroud)

regression r lm

7
推荐指数
1
解决办法
3237
查看次数

计算预测值时发出警告

使用数据框

x
    Date      Val
    1/1/2012   7
    2/1/2012   9
    3/1/2012   20
    4/1/2012   24
    5/1/2012   50
a <- seq(as.Date(tail(x, 1)$Date), by="month", length=5)
a <- data.frame(a)
x.lm <- lm(x$Val ~ x$Date)

x.pre<-predict(x.lm, newdata=a)
Run Code Online (Sandbox Code Playgroud)

我得到这个错误:

Warning message:
'newdata' had 5 rows but variable(s) found have 29 rows 
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

这是输出输出:

dput(x)
structure(list(Date = structure(c(14610, 14641, 14669, 14700, 
14730, 14761, 14791, 14822, 14853, 14883, 14914, 14944, 14975, 
15006, 15034, 15065, 15095, 15126, 15156, 15187, 15218, 15248, 
15279, 15309, 15340, 15371, 15400, 15431, 15461), class = "Date"), …
Run Code Online (Sandbox Code Playgroud)

r predict lm

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

Predict.glm不会预测响应中的缺失值

出于某种原因,当我指定glms(并且lm也是如此)时,R不会预测数据的缺失值.这是一个例子:

y = round(runif(50))
y = c(y,rep(NA,50))
x = rnorm(100)
m = glm(y~x, family=binomial(link="logit"))
p = predict(m,na.action=na.pass)
length(p)

y = round(runif(50))
y = c(y,rep(NA,50))
x = rnorm(100)
m = lm(y~x)
p = predict(m)
length(p)
Run Code Online (Sandbox Code Playgroud)

p的长度应该是100,但是它的50.奇怪的是,我在同一个脚本中有其他预测可以预测丢失的数据.

编辑:事实证明,那些其他预测是非常错误的 - 我正在做imputed.value = rnorm(N,mean.from.predict,var.of.prediction.interval).这回收了来自lm预测或glm预测函数的均值和sd向量length(predict)<N,这与我所寻求的完全不同.

所以我的问题是我的示例代码什么阻止glm和lm预测缺失值?

谢谢!

r prediction missing-data lm glm

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

`对比<-`(`*tmp*`,value = contr.funs [1 + isOF [nn]])中的错误与明显正确的数据集

当我尝试运行一个带有分类变量作为预测变量的简单线性模型时,我在R中遇到了问题.运行模型时,R会抛出错误

`Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) : `
Run Code Online (Sandbox Code Playgroud)

但是,数据似乎没问题(下面附有数据集):

str(minimal)
'data.frame':   330 obs. of  2 variables:
 $ swls      : num  5.2 NaN 7 6 NaN NaN NaN NaN NaN NaN ...
 $ exp.factor: Factor w/ 2 levels "erlebt","nicht erlebt": 1 1 1 1 2 2 2 2 NA 2 ...
Run Code Online (Sandbox Code Playgroud)

似乎数据中也有足够的变化,所以我发现的类似线程不适用于此:

table(minimal$exp.factor)

      erlebt nicht erlebt 
         148          163 
Run Code Online (Sandbox Code Playgroud)

`但是,lm()仍然拒绝工作:

lm(swls ~ exp.factor, data = minimal)
Fehler in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) : 
  Kontraste können nur auf …
Run Code Online (Sandbox Code Playgroud)

r lm

7
推荐指数
1
解决办法
9436
查看次数

线性回归并将结果存储在数据框中

我正在对数据框中的一些变量进行线性回归.我希望能够通过分类变量对线性回归进行子集化,对每个分类变量运行线性回归,然后将t-stats存储在数据框中.如果可能的话,我想在没有循环的情况下这样做.

这是我正在尝试做的一个示例:

  a<-  c("a","a","a","a","a",
         "b","b","b","b","b",
         "c","c","c","c","c")     
  b<-  c(0.1,0.2,0.3,0.2,0.3,
         0.1,0.2,0.3,0.2,0.3,
         0.1,0.2,0.3,0.2,0.3)
  c<-  c(0.2,0.1,0.3,0.2,0.4,
         0.2,0.5,0.2,0.1,0.2,
         0.4,0.2,0.4,0.6,0.8)
      cbind(a,b,c)
Run Code Online (Sandbox Code Playgroud)

我可以从运行以下线性回归开始,非常容易地拉出t统计量:

  summary(lm(b~c))$coefficients[2,3]
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够在列a为a,b或c时运行回归.我想将t-stats存储在一个如下所示的表中:

variable t-stat
a        0.9
b        2.4
c        1.1
Run Code Online (Sandbox Code Playgroud)

希望有道理.如果您有任何建议,请告诉我!

r linear-regression lm

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

在 R 中绘制回归线

我想在 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)

在此处输入图片说明

在此处输入图片说明

plot regression r linear-regression lm

7
推荐指数
2
解决办法
4万
查看次数

如何正确地"拟合"拟合的线性模型(通过`lm`)到ASCII文件并在以后重新创建?

我想将一个lm对象持久化到一个文件并将其重新加载到另一个程序中.我知道我可以通过saveRDS/ 写入/读取二进制文件来做到这一点readRDS,但我希望有一个ASCII文件而不是二进制文件.在更一般的层面上,我想知道为什么我在dput输出中阅读的习语一般不符合我的预期.

下面是简单拟合的示例,以及模型的成功和不成功的重新创建:

dat_train <- data.frame(x=1:4, z=c(1, 2.1, 2.9, 4))
fit <- lm(z ~ x, dat_train)
rm(dat_train) # Just to make sure fit is not dependent upon `dat_train existence`

dat_score <- data.frame(x=c(1.5, 3.5))

## This works (of course)
predict(fit, dat_score)
#    1    2 
# 1.52 3.48
Run Code Online (Sandbox Code Playgroud)

保存到二进制文件工作:

## http://stackoverflow.com/questions/5118074/reusing-a-model-built-in-r
saveRDS(fit, "model.RDS")
fit2 <- readRDS("model.RDS")
predict(fit2, dat_score)
#    1    2 
# 1.52 3.48
Run Code Online (Sandbox Code Playgroud)

这样做(dput它在R会话中不是文件):

fit2 <- eval(dput(fit))
predict(fit2, dat_score)
#    1 …
Run Code Online (Sandbox Code Playgroud)

regression r linear-regression lm

7
推荐指数
1
解决办法
235
查看次数

lm()和predict.lm()的奇怪行为取决于显式命名空间访问器的使用

我感兴趣的是lm函数的一些令人不安的行为以及predict.lmR中的相关函数.splines基础包提供了bs生成b样条展开的函数,然后可以使用lm多功能线性模型拟合函数来拟合样条模型.

这些lmpredict.lm函数具有很多内置的便利性,可以利用公式和术语.如果调用bs()嵌套在lm调用内,则用户可以提供单变量数据predict,并且此数据将自动扩展为适当的b样条基础.然后将照常预测这种扩展的数据矩阵.

library(splines)

x <- sort(runif(50, 0, 10))
y <- x^2

splineModel <- lm(y ~ bs(x, y, degree = 3, knots = c(3, 6)))

newData <- data.frame(x = 4)
prediction <- predict(splineModel, newData) # 16

plot(x, y)
lines(x, splineModel$fitted.values, col = 'blue3')
points(newData$x, prediction, pch = 3, cex = 3, col = 'red3')
legend("topleft", legend = c("Data", "Fitted Values", "Predicted …
Run Code Online (Sandbox Code Playgroud)

r spline predict lm

7
推荐指数
1
解决办法
212
查看次数

忽略观星者中因子变量的输出?

如果我使用 lm 和 factor 命令在 r 中运行固定效应模型,如何抑制观星者模型中的因子变量系数?

即我的模型是:

m1<-lm(GDP~pop_growth + factor(city))
Run Code Online (Sandbox Code Playgroud)

我想报告仅包含 pop_growth 的截距和系数的结果,而不是城市的每个虚拟变量的系数。

编辑:事实证明,问题在于变量名编码。省略=“城市”的作品。

r lm stargazer

7
推荐指数
1
解决办法
6806
查看次数