标签: lm

如何简洁地从数据框中编写包含许多变量的公式?

假设我有一个响应变量和一个包含三个协变量的数据(作为玩具示例):

y = c(1,4,6)
d = data.frame(x1 = c(4,-1,3), x2 = c(3,9,8), x3 = c(4,-4,-2))
Run Code Online (Sandbox Code Playgroud)

我想对数据进行线性回归:

fit = lm(y ~ d$x1 + d$x2 + d$y2)
Run Code Online (Sandbox Code Playgroud)

有没有办法编写公式,这样我就不必写出每个协变量?例如,像

fit = lm(y ~ d)
Run Code Online (Sandbox Code Playgroud)

(我希望数据框中的每个变量都是协变量.)我问,因为我的数据框中实际上有50个变量,所以我想避免写出来x1 + x2 + x3 + etc.

r dataframe lm glm

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

线性回归和R中的分组

我想使用lm()函数在R中进行线性回归.我的数据是一年一度的时间序列,一年(22年),另一个州(50个州).我想为每个状态拟合一个回归,以便最后我有一个lm响应的向量.我可以想象为每个状态做循环然后在循环内进行回归并将每个回归的结果添加到向量.但是,这似乎不像R一样.在SAS中我会做一个'by'语句,在SQL中我会做'group by'.R的做法是什么?

regression r linear-regression lm

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

获得通过最大似然估计的系数到星形表中

Stargazer为lm(和其他)物体生产非常漂亮的乳胶桌.假设我按最大可能性拟合模型.我希望观星者为我的估计生成一个类似于lm的表格.我怎样才能做到这一点?

虽然它有点hacky,但有一种方法可能是创建一个包含我的估计值的"假"lm对象 - 我认为只要summary(my.fake.lm.object)有效,它就会起作用.那容易行吗?

一个例子:

library(stargazer)

N <- 200
df <- data.frame(x=runif(N, 0, 50))
df$y <- 10 + 2 * df$x + 4 * rt(N, 4)  # True params
plot(df$x, df$y)

model1 <- lm(y ~ x, data=df)
stargazer(model1, title="A Model")  # I'd like to produce a similar table for the model below

ll <- function(params) {
    ## Log likelihood for y ~ x + student's t errors
    params <- as.list(params)
    return(sum(dt((df$y - params$const - params$beta*df$x) / params$scale, df=params$degrees.freedom, log=TRUE) - …
Run Code Online (Sandbox Code Playgroud)

optimization r lm stargazer

83
推荐指数
1
解决办法
2521
查看次数

如何从命名数字中提取数字(没有名称)?

我只是寻找B1(newx)线性模型系数的值,而不是名称.我只想要0.5值.我不想要名字"newx".

newx <- c(0.5,1.5.2.5)

newy <- c(2,3,4)

out <- lm(newy ~ newx)
Run Code Online (Sandbox Code Playgroud)

out 好像:

Call:
lm(formula = newy ~ newx)

Coefficients:
(Intercept)         newx  
       1.5         1.0  
Run Code Online (Sandbox Code Playgroud)

我到了这里 但现在我被卡住了.

out$coefficients["newx"]

newx 

1.0 
Run Code Online (Sandbox Code Playgroud)

r vector named lm

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

提取回归系数值

我有一个回归模型的一些时间序列数据调查药物利用率.目的是将样条拟合到时间序列并计算95%CI等.模型如下:

id <- ts(1:length(drug$Date))
a1 <- ts(drug$Rate)
a2 <- lag(a1-1)
tg <- ts.union(a1,id,a2)
mg <-lm (a1~a2+bs(id,df=df1),data=tg) 
Run Code Online (Sandbox Code Playgroud)

摘要输出mg是:

Call:
lm(formula = a1 ~ a2 + bs(id, df = df1), data = tg)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.31617 -0.11711 -0.02897  0.12330  0.40442 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)        0.77443    0.09011   8.594 1.10e-11 ***
a2                 0.13270    0.13593   0.976  0.33329    
bs(id, df = df1)1 -0.16349    0.23431  -0.698  0.48832    
bs(id, df = df1)2  0.63013    0.19362   3.254  0.00196 ** 
bs(id, …
Run Code Online (Sandbox Code Playgroud)

regression r lm

66
推荐指数
3
解决办法
16万
查看次数

预测() - 也许我不理解它

今天早些时候发布了关于使用该predict功能时遇到的错误.我能够纠正错误,并认为我走在了正确的道路上.

我有一些观察(实际),我有一些我想要推断或预测的数据点.我曾经lm创建过一个模型,然后我尝试使用predict将作为预测输入的实际值.

这段代码都是从我之前的帖子中重复出来的,但这里是:

df <- read.table(text = '
     Quarter Coupon      Total
1   "Dec 06"  25027.072  132450574
2   "Dec 07"  76386.820  194154767
3   "Dec 08"  79622.147  221571135
4   "Dec 09"  74114.416  205880072
5   "Dec 10"  70993.058  188666980
6   "Jun 06"  12048.162  139137919
7   "Jun 07"  46889.369  165276325
8   "Jun 08"  84732.537  207074374
9   "Jun 09"  83240.084  221945162
10  "Jun 10"  81970.143  236954249
11  "Mar 06"   3451.248  116811392
12  "Mar 07"  34201.197  155190418
13 …
Run Code Online (Sandbox Code Playgroud)

r predict lm

58
推荐指数
3
解决办法
18万
查看次数

获得警告:"'newdata'有1行但找到的变量有32行"在predict.lm上

我在R中使用预测和lm函数时发现了特性.我对相同数据的数据帧和向量得到了不同的结果.

DataFrame代码:

data(mtcars)
fitCar<-lm(mtcars$mpg~mtcars$wt)
predict(fitCar,
        data.frame(x=mean(mtcars$wt)),
        interval="confidence")
Run Code Online (Sandbox Code Playgroud)

输出:

     fit       lwr      upr
1  23.282611 21.988668 24.57655
2  21.919770 20.752751 23.08679
3  24.885952 23.383008 26.38890
4  20.102650 19.003004 21.20230
5  18.900144 17.771469 20.02882
6  18.793255 17.659216 19.92729
7  18.205363 17.034274 19.37645
8  20.236262 19.136179 21.33635
9  20.450041 19.347720 21.55236
10 18.900144 17.771469 20.02882
11 18.900144 17.771469 20.02882
12 15.533127 14.064349 17.00190
13 17.350247 16.104455 18.59604
14 17.083024 15.809403 18.35664
15  9.226650  6.658271 11.79503
16  8.296712  5.547468 11.04596
17  8.718926  6.052112 11.38574
18 …
Run Code Online (Sandbox Code Playgroud)

r prediction lm

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

R:数字'envir'arg不是长度为1的预测()

我试图通过将变量传递到模型中来预测R使用predict()函数的值.

我收到以下错误:

Error in eval(predvars, data, env) : 
  numeric 'envir' arg not of length one
Run Code Online (Sandbox Code Playgroud)

这是我的data frame名字df:

df <- read.table(text = '
     Quarter Coupon      Total
1   "Dec 06"  25027.072  132450574
2   "Dec 07"  76386.820  194154767
3   "Dec 08"  79622.147  221571135
4   "Dec 09"  74114.416  205880072
5   "Dec 10"  70993.058  188666980
6   "Jun 06"  12048.162  139137919
7   "Jun 07"  46889.369  165276325
8   "Jun 08"  84732.537  207074374
9   "Jun 09"  83240.084  221945162
10  "Jun 10"  81970.143 …
Run Code Online (Sandbox Code Playgroud)

r predict lm

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

将变量向量传递给lm()公式

我试图自动化一段代码,以便编程变得不那么乏味.

基本上我试图fastbw()rms包中逐步选择变量.我想将选择的变量列表传递fastbw()给公式y ~ x1+x2+x3,"x1""x2""x3"是由所选的变量列表fastbw()

这是我尝试过但没有用的代码

olsOAW0.r060 <- ols(roll_pct~byoy+trans_YoY+change18m, 
                    subset= helper=="POPNOAW0_r060", 
                    na.action = na.exclude, 
                    data = modelready)

OAW0 <- fastbw(olsOAW0.r060, rule="p", type="residual", sls= 0.05)

vec <- as.vector(OAW0$names.kept, mode="any")

b <- paste(vec, sep ="+") ##I even tried b <- paste(OAW0$names.kept, sep="+")

bestp.OAW0.r060 <- lm(roll_pct ~ b , 
                      data = modelready, 
                      subset = helper =="POPNOAW0_r060",    
                      na.action = na.exclude)
Run Code Online (Sandbox Code Playgroud)

我是R的新手,仍然没有落后于陡峭的学习曲线,所以为明显的编程错误道歉.

r paste lm

43
推荐指数
3
解决办法
4万
查看次数

在线性模型中用R提取R平方值

我知道使用summary将帮助我手动执行此操作,但是,我将不得不计算大量的R平方值.因此,我需要计算机为我提取它.这是一个简单的例子:

library(alr3)
M.lm=lm(MaxSalary~Score,data=salarygov)
#Here you will see the R square value
summary(M.lm)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

r lm

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