小编eti*_*nne的帖子

lm()回归与整个数据帧的交互

我知道有一个快捷方式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)

regression r lm

9
推荐指数
2
解决办法
5446
查看次数

在lm lapply调用列表中使用权重参数

这是我的问题(虚构数据,以便可重现):

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 lapply lm

8
推荐指数
2
解决办法
194
查看次数

R 包 CEM:“[.data.frame”(TEi,idt) 中出现错误:选择了未定义的列

我正在尝试与 R 包执行粗化精确匹配CEM。我有一个观察数据框(没有缺失的观察结果,有关名称请参见下文),并且正在尝试:

  1. 执行 CEM 和抑郁症 (depres6mo) 作为匹配治疗,然后
  2. 使用匹配的数据集执行线性回归,并将阿片类药物作为结果 (opiates_sum1yr)。

当我运行下面的代码时,出现错误:

(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

3
推荐指数
1
解决办法
924
查看次数

如何在R中生成时间序列数据

我想使用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)

任何帮助表示赞赏.

analytics r time-series

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

标签 统计

r ×4

lm ×2

analytics ×1

lapply ×1

regression ×1

time-series ×1