相关疑难解决方法(0)

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

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

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万
查看次数

具有动态变量数的公式

假设有一些data.frame foo_data_frame,并且想要找到某些其他列的目标列Y的回归.为此目的,通常使用一些公式和模型.例如:

linear_model <- lm(Y ~ FACTOR_NAME_1 + FACTOR_NAME_2, foo_data_frame)
Run Code Online (Sandbox Code Playgroud)

如果公式是静态编码的话,这确实很有效.如果希望使用常数的因变量(例如2)对多个模型进行根处,则可以这样处理:

for (i in seq_len(factor_number)) {
  for (j in seq(i + 1, factor_number)) {
    linear_model <- lm(Y ~ F1 + F2, list(Y=foo_data_frame$Y,
                                         F1=foo_data_frame[[i]],
                                         F2=foo_data_frame[[j]]))
    # linear_model further analyzing...
  }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是当程序运行期间变量的数量动态变化时,如何做同样的影响?

for (number_of_factors in seq_len(5)) {
   # Then root over subsets with #number_of_factors cardinality.
   for (factors_subset in all_subsets_with_fixed_cardinality) {
     # Here I want to fit model with factors from factors_subset.
     linear_model <- lm(Does R provide smth to …
Run Code Online (Sandbox Code Playgroud)

r formula

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

使用glm在R中指定公式而不明确声明每个协变量

我想强制特定的变量进入glm回归而不完全指定每个变量.我的真实数据集有大约200个变量.到目前为止,我还没有在我的在线搜索中找到这样的样本.

例如(只有3个变量):

n=200
set.seed(39) 
samp = data.frame(W1 = runif(n, min = 0, max = 1), W2=runif(n, min = 0, max = 5)) 
samp = transform(samp, # add A
A = rbinom(n, 1, 1/(1+exp(-(W1^2-4*W1+1))))) 
samp = transform(samp, # add Y
Y = rbinom(n, 1,1/(1+exp(-(A-sin(W1^2)+sin(W2^2)*A+10*log(W1)*A+15*log(W2)-1+rnorm(1,mean=0,sd=.25))))))
Run Code Online (Sandbox Code Playgroud)

如果我想包含所有主要术语,这有一个简单的快捷方式:

glm(Y~., family=binomial, data=samp)
Run Code Online (Sandbox Code Playgroud)

但是说我想要包括所有主要术语(W1,W2和A)加上W2 ^ 2:

glm(Y~A+W1+W2+I(W2^2), family=binomial, data=samp)
Run Code Online (Sandbox Code Playgroud)

这有什么捷径吗?

[在发布之前编辑自己:]这个有效! glm(formula = Y ~ . + I(W2^2), family = binomial, data = samp)

好的,那么这个呢!

我想省略一个主要的术语变量,只包括两个主要术语(A,W2)和W2 ^ 2和W2 ^ 2:A:

glm(Y~A+W2+A*I(W2^2), family=binomial, data=samp)
Run Code Online (Sandbox Code Playgroud)

显然只有几个变量不需要快捷方式,但我使用高维数据.当前数据集"仅"有200个变量,但其他一些变量有成千上万个.

program-entry-point regression r glm

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

将R公式格式转换为数学方程

当我们在R中拟合统计模型时,比如说

lm(y ~ x, data=dat)
Run Code Online (Sandbox Code Playgroud)

我们使用R的特殊公式语法:"y~x"

是否存在从这样的公式转换为相应的公式的东西?在这种情况下,它可以写成:

y = B0 + B1*x
Run Code Online (Sandbox Code Playgroud)

这将非常有用!首先,因为有更复杂的公式,我不相信我的翻译.其次,在用R/Sweave/knitr编写的科学论文中,有时候模型应该以方程式形式报告,并且为了完全可重复的研究,我们希望以自动化方式进行.

statistics r

8
推荐指数
1
解决办法
1052
查看次数

R:具有特定变量范围的多元线性回归

它看起来很简单,但是我不知道如何在R中进行编码。我有一个带有约100个变量的数据框(df),并且我想在响应中进行多元回归,即我的第一个变量(Y)和变量25至60作为回归变量。问题是我不想像这样写每个变量名:

lm(Y~var25+var26+.......var60, data=df)
Run Code Online (Sandbox Code Playgroud)

我想使用[,​​25:60]之类的东西来选择一个完整的范围。我已经尝试过了,但是没有用:

test <- lm(Y~df[, 25:60], data=df)
summary(test)
Run Code Online (Sandbox Code Playgroud)

有想法吗?

r lm

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

在逻辑回归中输入整个数据框作为自变量

可能重复:
构建模型时对许多变量进行简短的公式调用

我有一个很大的数据框(112个变量),我想用R做逐步逻辑回归.我知道如何设置glm模型和stepAIC模型,但我宁愿不输入所有的标题来输入自变量.是否有一种快速方法可以将glm模型作为独立变量提供给整个数据框,以便将每个列识别为包含在模型中的x变量?我试过了:

ft<-glm(MFDUdep~MFDUind, family=binomial)
Run Code Online (Sandbox Code Playgroud)

但它不起作用(错误的数据类型).MFDUdep和MFDUind都是数据帧,MFDUind包含111个'x'变量并MFDUdep包含单个"y".

regression r dataframe

0
推荐指数
1
解决办法
2492
查看次数

标签 统计

r ×6

dataframe ×2

glm ×2

lm ×2

regression ×2

formula ×1

program-entry-point ×1

statistics ×1