我知道有一个快捷方式R可以lm()在所有数据帧上运行回归,如下所示:
reg<-lm(y~.,data=df)
Run Code Online (Sandbox Code Playgroud)
df具有解释变量x1,x2,... x5,所以它与写入相同
reg<-lm(y~x1+x2+x3+x4+x5,data=df)
Run Code Online (Sandbox Code Playgroud)
但这不包括像x1:x2这样的交互术语,...是否有快捷方式在R数据框的所有列上运行回归?我正在寻找2个具有相同效果的快捷方式
reg<-lm(y~x1*x2,x1*x3,x1*x4,x1*x5,x2*x3,...)
reg<-lm(y~x1*x2*x3*x4*x5) # this one will have interactions between the 5 variables
Run Code Online (Sandbox Code Playgroud) 这是我的问题(虚构数据,以便可重现):
set.seed(42)
df<-data.frame("x"=rnorm(1000),"y"=rnorm(1000),"z"=rnorm(1000))
df2<-data.frame("x"=rnorm(100),"y"=rnorm(100),"z"=rnorm(100))
breaks<-c(-1000,-0.68,-0.01315,0.664,1000)
divider<-cut(df$x,breaks)
divider2<-cut(df2$x,breaks)
subDF<-by(df,INDICES=divider,data.frame)
subDF2<-by(df2,INDICES=divider2,data.frame)
reg<-lapply(subDF,lm,formula=x~.)
pre<-lapply(1:4,function(x){predict(reg[[x]],subDF2[[x]])})
lapply(1:4,function(x){summary(reg[[x]])$r.squared})
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常.我正在做的是:根据值x,我分成df4个数据帧并对每个数据帧进行回归,以便能够预测其他数据集的值.数据帧的分割是为了更好地预测,因为范围对x实际数据有很大影响.
我想要做的是为回归添加权重参数,以更加重视最新数据.我的权重参数是:weights<-0.999^seq(250,1,by=-1)如果有250个数据.种子为42,之前的断裂,所有4个维度都是250.
当我尝试做的时候reg<-lapply(subDF,lm,formula=x~.,weights=0.999^seq(250,1,by=-1)),我收到了这个错误:
Error in eval(expr, envir, enclos) :
..2 used in an incorrect context, no ... to look in
Run Code Online (Sandbox Code Playgroud)
这是一个很奇怪,因为lapply有一个...参数,在这里使用formula但它不接受weights.
所以我真的不知道如何添加这些权重.我应该在我的代码中纠正什么,或者我(几乎)完全改变它以便能够使用权重?
对于该示例并且为了使它(可能)更容易,我剪切了断点以使4个子集具有相同的维度,但理想情况下,即使4个子集不具有相同的维度,所以答案也将起作用(因此,breaks<-c(-1000,-0.75,0,0.75,1000)对于实例)
CrossValidated上的这篇文章有着相同的问题,但没有一个有效的解决方案,所以这对我没有帮助.
我正在尝试与 R 包执行粗化精确匹配CEM。我有一个观察数据框(没有缺失的观察结果,有关名称请参见下文),并且正在尝试:
当我运行下面的代码时,出现错误:
(TEi, idt)中的错误
[.data.frame:选择了未定义的列
但是,我已经仔细检查过我要回归的所有变量都是数据框中的变量。知道发生了什么事吗?
colnames(nonMissing)
# [1] "depres6mo" "alcohol" "obesity" "ageGrp" "sex" "geoRegion"
# [7] "year" "multi_lami" "multi_fusion" "single_lami" "instr" "htn"
# [13] "chf" "copd" "MI" "diab_u" "diab_c" "drug"
# [19] "tbco" "planType" "opiates_sum1yr" "daily"
mod_match <- cem(treatment = "depres6mo", data = nonMissing, drop = c("opiates_sum1yr", "daily"))
opiatesLin <- att(mod_match, opiates_sum1yr ~ depres6mo + alcohol + obesity + ageGrp + sex + geoRegion + year + …Run Code Online (Sandbox Code Playgroud) 我想使用R生成48小时,在csv文件中每50毫秒生成一次时间序列数据.
我尝试了以下内容,没有成功
x<-Sys.time()
x
# [1] "2015-12-05 08:00:29 EST"
x.ts <- ts(x, start=1, freq=2)
x.ts
# Time Series:
# Start = c(1, 1)
# End = c(10, 1)
# Frequency = 2
# [1] 1449317249 1449317249 1449317249 1449317249 1449317249 1449317249
# [7] 1449317249 1449317249 1449317249 1449317249 1449317249 1449317249
# [13] 1449317249 1449317249 1449317249 1449317249 1449317249 1449317249
# [19] 1449317249
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.