楼主: 天狐君
2866 5

[问答] R语言 一元回归 结果不一致 [推广有奖]

  • 1关注
  • 0粉丝

已卖:2份资源

硕士生

3%

还不是VIP/贵宾

-

威望
0
论坛币
841 个
通用积分
0.0417
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1063 点
帖子
74
精华
0
在线时间
187 小时
注册时间
2012-10-25
最后登录
2024-8-30

楼主
天狐君 发表于 2015-11-26 12:20:31 |AI写论文
50论坛币
问题可以表达为以下形式:
set.seed(123) #随机数种子
y = rnorm(100)   #生成100个正态分布随机数
x = rt(100,5)   #100个t分布随机数,df=5
x2 = x^2  # 之前的x平方,还是100个数


问题来了,想做一个简单的一元回归,被解释变量是y,解释变量是x的平方,尝试了以下形式。
lm(y ~ (x^2)) #第一种,x在lm中平方

lm(y ~ x2) #第二种,x平方后的x2参与回归
lm(y ~ I(x^2)) #第三种,我不明白里面的I()是什么意思(从书上看到的做法,求解答)

结果发现,第二、三种方法结果相同,第一种结果与其他两个不同,不知道为什么,还有I()是什么意思。大家谁能解答一下,谢谢。

ps:附上各自的回归结果

第一种:
lm(formula = y ~ (x^2))

Residuals:
     Min       1Q   Median       3Q      Max
-2.49845 -0.62079 -0.02538  0.66229  2.14778

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)  0.09369    0.08999   1.041   0.3004  
x           -0.11632    0.05899  -1.972   0.0515 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.8998 on 98 degrees of freedom
Multiple R-squared:  0.03816,

最佳答案

jiangbeilu 查看完整内容

需要加I()这个函数来表示是一个平方项,会先进行运算。 因为lm里的对象是formula,也就是是字符型式的,不会参与运算。 所以你直接用lm(y~(x^2))回归时,得到的结果和lm(y~x)是一样的。 感谢你提供随机数种子,才可以这么快地帮你找到问题所在。
关键词:R语言 coefficients coefficient Residuals EFFICIENT 正态分布

回帖推荐

jiangbeilu 发表于2楼  查看完整内容

需要加I()这个函数来表示是一个平方项,会先进行运算。 因为lm里的对象是formula,也就是是字符型式的,不会参与运算。 所以你直接用lm(y~(x^2))回归时,得到的结果和lm(y~x)是一样的。 感谢你提供随机数种子,才可以这么快地帮你找到问题所在。

沙发
jiangbeilu 学生认证  发表于 2015-11-26 12:20:32
  1. set.seed(123) #随机数种子
  2. y = rnorm(100)   #生成100个正态分布随机数
  3. x = rt(100,5)   #100个t分布随机数,df=5
  4. x2 = x^2  # 之前的x平方,还是100个数
  5. lm(y~x)
  6. lm(y~(x^2))
  7. lm(y~x2)
  8. lm(y~I(x^2))
复制代码


需要加I()这个函数来表示是一个平方项,会先进行运算。
因为lm里的对象是formula,也就是是字符型式的,不会参与运算。
所以你直接用lm(y~(x^2))回归时,得到的结果和lm(y~x)是一样的。

感谢你提供随机数种子,才可以这么快地帮你找到问题所在。

藤椅
天狐君 发表于 2015-11-26 12:21:11
lm(formula = y ~ x2)

Residuals:
     Min       1Q   Median       3Q      Max
-2.39146 -0.57294 -0.03422  0.60557  2.10730

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
第二种:
(Intercept) 0.078970   0.101935   0.775    0.440
x2          0.004914   0.019115   0.257    0.798

Residual standard error: 0.9172 on 98 degrees of freedom
Multiple R-squared:  0.0006738,        Adjusted R-squared:  -0.009523
F-statistic: 0.06608 on 1 and 98 DF,  p-value: 0.7977

板凳
天狐君 发表于 2015-11-26 12:23:14
第三种:

lm(formula = y ~ I(x^2))

Residuals:
     Min       1Q   Median       3Q      Max
-2.39146 -0.57294 -0.03422  0.60557  2.10730

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.078970   0.101935   0.775    0.440
I(x^2)      0.004914   0.019115   0.257    0.798

Residual standard error: 0.9172 on 98 degrees of freedom
Multiple R-squared:  0.0006738,        Adjusted R-squared:  -0.009523
F-statistic: 0.06608 on 1 and 98 DF,  p-value: 0.7977

报纸
天狐君 发表于 2015-11-26 18:34:33
jiangbeilu 发表于 2015-11-26 12:20
需要加I()这个函数来表示是一个平方项,会先进行运算。
因为lm里的对象是formula,也就是是字符型式的, ...
十分感谢!你的回答非常专业!相信对有类似疑问的同学也同样具有价值!谢谢你!

地板
gusu800829 发表于 2015-11-30 22:12:57
学习一下

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 03:44