【问题标题】:Data.frame and different specifications linear regression modelsData.frame 和不同规格的线性回归模型
【发布时间】:2016-01-15 15:05:51
【问题描述】:

这是我的数据框:

data <- matrix(rnorm(50*5),nrow=50)
m <- data.frame(data )
m

            X1          X2           X3           X4
1  -0.47903358  1.92799699 -0.584364168 -1.475276350
2   0.05464517  1.90064618  1.721449935  1.215188405
3   2.23782855  0.16839367 -0.074212064 -0.719745849
4   0.44476924  0.37247676  0.300423948  1.722222410
5  -0.66889333  0.26094142 -0.001254037  0.617630295
6  -1.17663634 -1.93020031 -2.813433555  0.350943310
7   2.16609882 -0.06594556  0.133278642  1.693078802
8  -0.16090564 -1.14454452 -1.340407149  0.574943347
9   0.46691283  0.98394614 -0.277273498  0.030499576
10  1.19049154  1.03160103  0.626364442  0.429348535
11  0.72593476  0.89130574 -0.599052058  2.012316875
12 -0.04748923 -1.38044706  0.058364936  0.825752213
13 -0.90407306  0.14790680  0.002608154 -0.991979288
14 -1.50113350  0.78807179 -2.371160466  0.559174890
15  0.04075635 -1.14486991  1.585769771 -0.495937216
16  1.29724449  0.47729721 -0.871033202  1.524746619
17  1.12384656 -0.07589516 -0.463837527  0.206108262
18  0.65092671  0.29660588 -1.096981115 -0.326524160
19 -0.54953490 -0.06792527 -0.543922865  0.211205138
20  0.19187346 -0.65190412 -1.674653668  0.712704645
21  0.97108788  0.91087005  0.182424518 -0.296413534
22  1.64975949  0.22140448 -0.075355571 -0.472299544
23  1.45613296 -1.29101443  1.231839302  0.774475499
24 -0.15324579 -1.31596417 -0.343467527  0.087122108
25  0.20305822 -0.96867715 -0.311745324 -1.483964874
26 -2.22916775  1.46982603 -0.254705650 -0.003573105
27  0.26135095 -0.44053524  0.208284330  0.459095264
28  0.55020951 -0.37742141  0.346186077  0.825811292
29 -0.78695097 -0.21014858  0.003055816  2.142121347
30 -0.33506969  0.31572240 -0.139970552  1.344697176
31 -0.94164226 -0.88366990 -0.906886069  0.774590884
32  3.23764133 -0.47556802  0.166917302  0.959307700
33 -0.64114926  0.16089400  1.942563410  0.142073261
34  0.03848502 -0.83066179  0.934403254  1.730448144
35 -0.34621698  0.65682342  1.601365990  0.160012282
36  0.62848314  0.33126945  0.188823549  2.380319403
37  1.02807329  1.07299920  0.398083643 -0.208241920
38 -0.50616984  1.68998408  0.427342040 -0.345264684
39  1.31721397 -1.17111247  1.754036030  0.755414080
40  1.23714888 -0.12253370  0.887065669  0.001770354
41  0.59541135  0.66438057  0.880643498  1.441513269
42  0.41100680  0.52757460  1.219644246  1.450262235
43  0.08984815  1.44830794  0.113193523 -0.620546777
44 -1.51411951 -0.17346499 -0.698924584 -0.767921061
45 -1.03652530  1.27296507  1.740954529 -0.467568299
46  1.14533381 -0.67304957 -0.384012335  0.637582075
47  0.37996214  0.53566774 -1.413930797  1.222728459
48 -0.53705734  0.77591264  0.375236588 -1.430924067
49  0.64051195 -0.22562951 -1.667050192  0.345009059
50 -1.19521122  1.18436746 -0.905004199 -0.005221906

好吧,我现在要估计 3 个不同的模型。

X1 = X2 + X3 + X4
X1 = X2^2 + X3(Lag1) + X4^2
ln(X1)=X2^2 + X3(Lag1) + X4^2

作为我在 R 中的初学者,我无法实现一个功能来做到这一点。 我正在阅读 lm 函数,但仍然无法实现这些模型。我可以实现的方式非常简陋,即我为每个模型都使用了一个 data.frame。

谢谢

【问题讨论】:

  • 要使用lm(),您需要一个回归公式。您的结果数据必须是数据框中的一列。公式中的“t”值应该是要使用的数据框中的常数。一旦你有了它,你就可以创建一个字符串你的公式并在此基础上进行回归。因此, Y 需要在您的 data.frame 中,并且 t 需要在您的 as data.frame 以及您的 x 值中。一个示例公式是字符串:Y ~ X1 + X2 + X3~ 图标,您可以将其视为等号。
  • 感谢 giraffehere 的回答。我编辑了问题。
  • 您还需要 X3 的滞后变量列,但我会写出有关如何执行此操作的答案。请注意,回归中的每个变量都需要一列。

标签: r dataframe regression linear-regression


【解决方案1】:

要使用 lm(),您至少需要两件事。您需要一个公式,并且需要数据来应用该公式。在您的情况下,以下是您编写代码以对数据运行非常简单、基本的线性回归的方法。同样,您需要在数据中使用“X3_Lag1”变量(字面意思是应用了滞后的列)来回归滞后数据(创建一个新列,将 X3 向下推一行),然后剪切该缺失值的数据在第一行。

# Getting the first model.
formula1 <- "X1 ~ X2 + X3 + X4"
lin1 <- lm(formula1, data)
summary(lin1) # This will give you the coefficients for each value.

# Getting the second model.
formula2 <- "X1 ~ X2^2 + X3_Lag1 + X4^2"
lin2 <- lm(formula2, data)
summary(lin2)

# Getting the third model.
formula3 <- "log(X1) ~ X2^2 + X3_Lag1 + X4^2"
lin3 <- lm(formula3, data)
summary(lin3)

警告:我相信您会在第三个公式中遇到错误,因为您采用的是负数的自然对数,这是不可能的。请注意这种情况。

【讨论】:

  • 我在考虑如何在不包含列的情况下做到这一点。我做了这个lm(X1 ~ X2 + I(X3^2), m)。我不需要包含 x3^2 列。和lm(log(X1) ~ X2 + I(X3^2) , m)。滞后变量是问题所在。
  • 您不需要该运算符的“X3^2”列,它将起作用,为您提供 X3 列中每个数字的平方。但是,对于滞后变量,据我所知,您将需要一个“X3_Lag1”列,您需要在数据中创建该列。据我所知,没有办法在公式本身中创建滞后,您必须事先在公式之外和数据中进行。我对 log(X1) 的担忧是您的 X1 列中有负值,这是对数中不允许的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
  • 2016-01-17
  • 2019-10-15
  • 2021-01-11
  • 2013-11-04
  • 2018-03-17
  • 1970-01-01
相关资源
最近更新 更多