楼主: hkhorsetrack
1131 6

[问答] 如何用一個dataframe同時做兩組甚至更多組的lm迴歸呢 ? [推广有奖]

  • 0关注
  • 0粉丝

本科生

15%

还不是VIP/贵宾

-

威望
0
论坛币
49 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
336 点
帖子
26
精华
0
在线时间
95 小时
注册时间
2018-4-5
最后登录
2020-6-13

楼主
hkhorsetrack 发表于 2018-4-29 00:04:57 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
各位大大好,

dataframe 如下 :

IndexTypeDayReal

1

A120

1

0.583

2

A120

2

0.534

3

A120

3

0.555

4

A120

4

0.512

5

A120

5

0.513

6

A120

6

0.499

7

A165

1

0.641

8

A165

2

0.587

9

A165

3

0.539

10

A165

4

0.506

11

A165

5

0.579

12

A165

6

0.440



A120, A165 是兩种型号, 如何用一個dataframe同時做兩組甚至更多組的lm迴歸呢 ?

IndexTypeDayRealpredict

1

A120

1

0.583

?

2

A120

2

0.534

?

3

A120

3

0.555

?

4

A120

4

0.512

?

5

A120

5

0.513

?

6

A120

6

0.499

?

7

A165

1

0.641

?

8

A165

2

0.587

?

9

A165

3

0.539

?

10

A165

4

0.506

?

11

A165

5

0.579

?

12

A165

6

0.440

?


得到lm迴歸式後, 又如何在將所有day 的 predict 結果存predict col. 中呢?
補回代碼 :
ydata <- data.frame(index = 1:12, type = c(rep("A120",6),rep("A165",6)), day = c(1:6,1:6),
                   real = c(0.583,0.534,0.555,0.512,0.513,0.499,0.641,0.587,0.539,0.506,0.579,0.440))




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


沙发
cheetahfly 在职认证  发表于 2018-4-29 10:00:37 来自手机
hkhorsetrack 发表于 2018-4-29 00:04
各位大大好,

dataframe 如下 :
认真阅读Hadley Wickham的R for data science,关于建模的那一章,论坛里有资源。

藤椅
hkhorsetrack 发表于 2018-4-29 11:21:09
謝謝cheetahfly,
小弟英文程度去不了高中, 英文太難理解了, 更怕誤解了內文.
由於自己是門外漢, 所以這個帖想問是 技巧, 我想邊做邊學的, 再次謝謝

板凳
rainningpoet 发表于 2018-4-30 01:16:35
不是很明白你的问题。你的数据应该就是 Real= y +y1 * Type+y2*Day .  用线性回归 得到 y , y1,y2 然后代入 就等到每个预测predict.
如果你用不同的模型或不同的参数 就会得到 不同的 y,y1,y2 。然后得到的 predict 也不一样。

PS:如果你英文水平真的不到高中。建议你先学习英文。因为在R 就是用英文写的。www.datacamp.com 这个网站不错。可以把英文和R 一起学了。
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

报纸
hkhorsetrack 发表于 2018-5-1 17:03:24
library(lme4)
library(lattice)
library(nlme)
library(dplyr)


ydata <- data.frame(index = 1:12, type = c(rep("A120",6),rep("A165",6)), day = c(1:6,1:6),
                   real = c(0.583,0.534,0.555,0.512,0.513,0.499,0.641,0.587,0.539,0.506,0.579,0.440))

fitted_models = ydata %>% group_by(type) %>% do(model = lm(real~day, data = .))
fitted_details <- fitted_models %>% augment(model)

這個是我昨天學会寫的, 問題原意是所有資料都存一個dataframe里, 但当中可能包含几組甚至千百組組合(type), eg.中国的不同省巿,
雖然用一條 lm 可以推算dataframe里的資料, 但未必能貼近現實, 所以我想分組做 lm , 但將一個dataframe分拆成几組甚至千百組再進行 lm 十分費時, 再逐個看結果亦費時, 所以想尋找 "技巧" 可以加速得到結果.
fitted_models 里, 有一個col 叫 .fitted, 我想將這個結果放在predict中, 如果我沒記錯, 這個應是 Yi,
請問还有其他更簡單方法嗎?

另外, 多謝上面的大大善良意見, 我的日子不多了, 微分只學了不足100小時, 程度还很有限, 英文对我更是太遙遠了.
待我弄好模型再學習, 感謝.




已有 1 人评分论坛币 收起 理由
cheetahfly + 50 自己研究出来不吝分享

总评分: 论坛币 + 50   查看全部评分

地板
rainningpoet 发表于 2018-5-2 00:05:55
雖然用一條 lm 可以推算dataframe里的資料, 但未必能貼近現實, 所以我想分組做 lm , 但將一個dataframe分拆成几組甚至千百組再進行 lm 十分費時.

如果有那么多种不同的情况。直接把type 当作 一个模型的 变量好了。 或者你把type 聚类成 几个type 再做几个模型。

我没有听说过做很多个模型的。世间万物多少有共性。比如你把中国的省聚类成 南方/北方/西部 之类的

7
cheetahfly 在职认证  发表于 2018-5-2 10:47:40
hkhorsetrack 发表于 2018-5-1 17:03
library(lme4)
library(lattice)
library(nlme)
我用iris数据集举个例子吧
  1. library(tidyverse)
  2. library(modelr)
  3. iris %>%
  4.     group_by(Species) %>%
  5.     nest() %>%
  6.     mutate(model = map(data, function(x) lm(Sepal.Length ~ Petal.Length, data = x)),
  7.            prediction = map2(data, model, add_predictions)) %>%
  8.     unnest(prediction)
复制代码
我个人认为,R语言是表皮,统计思想和对数据的理解是骨肉,多看像Hadley Wickham这样的大神写的书,会触摸到他的思想,而不光是技巧。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-8 04:59