2016-02-26 3 views
0

Я пытаюсь построить только несколько линий регрессии, а не любые точки. (Нет fitted, потому что у меня более 7 тысяч баллов.) Я знаю, как это сделать с линейными регрессиями, но не с полиномиальной регрессией. Мои данные: here. С помощью нескольких линейных регрессий:Кривая множественной регрессии многочлена

plot_data=read.csv("plot_data.csv") #read data 

#linear regressions 
Off_linear=lm(Z_Salary~OBPM,data=plot_data) 
Def_linear=lm(Z_Salary~DBPM,data=plot_data) 
Tot_linear=lm(Z_Salary~BPM,data=plot_data) 

#try to plot. This works. Not sure how to add legend 
termplot(Def_linear, ylab='Z_Salary',xlab='BPM',ylim=c(-2, 2)) 
abline(Off_linear) 
abline(Tot_linear,col='blue') 

Plot

Однако я не могу это сделать, если я пытаюсь создать полиномиальные регрессии. Мне нужен такой же сюжет с этими регрессиями, но termplot работает вместе с независимыми переменными и делает их отдельно.

Off_exp=lm(Z_Salary~OBPM+I(OBPM^2),data=plot_data) 
Def_exp=lm(Z_Salary~DBPM+I(DBPM^2),data=plot_data) 
Tot_exp=lm(Z_Salary~BPM+I(BPM^2),data=plot_data) 
+0

Укажите значения x, которые вы хотите построить для получения прогнозируемых значений, используя функцию прогнозирования. – Dason

+0

@Dason вы можете более точно объяснить, как это сделать. Я создаю новые значения x, но он по-прежнему не работает. 'nd = data.frame (x = seq (0,8, length = 8)) test = предсказать (Def_exp, newdata = nd)' –

ответ

1

@Dason уже дал вам подсказку. Найдите ниже код, чтобы он работал.

Off_exp=lm(Z_Salary~OBPM+I(OBPM^2),data=plot_data) 
x=seq(from=range(plot_data$OBPM)[1], to=range(plot_data$OBPM)[2]) 
y=predict(Off_exp, newdata=list(OBPM=x)) 
plot(x, y, type="l", col="blue", xlab="OBPM", ylab="Z_Salary") 
legend("topleft", legend="d2", col="blue", lty=1, title="polys") 

Это будет выглядеть примерно так: resulting plot

Надеется, что это помогает.

+1

Благодарим вас за ответ, однако 'y = pred (Off_exp, newdata = list (OBPM = x.grid)) 'не работает, потому что у меня пока ничего не установлено как x.grid. Если я устанавливаю 'x.grid = OPBM', тогда я получаю сообщение об ошибке, когда говорят, что значения '' x 'и' y 'отличаются друг от друга", что имеет смысл, потому что Y - длина OBPM, а X - как 20 –

+0

Я исправил ответ, извините за глупую опечатку. Приветствия. – lrnzcig

Смежные вопросы