假设我有一个响应变量和一个包含三个协变量的数据(作为玩具示例):
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.
我想使用lm()函数在R中进行线性回归.我的数据是一年一度的时间序列,一年(22年),另一个州(50个州).我想为每个状态拟合一个回归,以便最后我有一个lm响应的向量.我可以想象为每个状态做循环然后在循环内进行回归并将每个回归的结果添加到向量.但是,这似乎不像R一样.在SAS中我会做一个'by'语句,在SQL中我会做'group by'.R的做法是什么?
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) 我只是寻找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) 我有一个回归模型的一些时间序列数据调查药物利用率.目的是将样条拟合到时间序列并计算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) 我今天早些时候发布了关于使用该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中使用预测和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使用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) 我试图自动化一段代码,以便编程变得不那么乏味.
基本上我试图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的新手,仍然没有落后于陡峭的学习曲线,所以为明显的编程错误道歉.
我知道使用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)
我怎样才能做到这一点?
lm ×10
r ×10
predict ×2
regression ×2
dataframe ×1
glm ×1
named ×1
optimization ×1
paste ×1
prediction ×1
stargazer ×1
vector ×1