在 R 中绘制样条线

问题描述 投票:0回答:1

我想用 R 绘制样条曲线。但我收到错误消息“'newdata' 有 38 行,但找到的变量有 700 行” 我不确定为什么样条线有这么多行。确实有很多。

我的教授告诉我,我应该使用函数 lm() 和 bs()。这就是我使用它们的原因。

希望得到您的帮助:-)

额外问题:我可以以 3D 方式绘制所有三个变量:销售额、访问量和折扣如何相互关联吗?

--

这是我的代码。我希望我没有遗漏任何东西。 我仍然缺少如何从样条线模型(spline_model)中制作一条线的概念。为什么我需要用 seq 和 pred 再次预测数据(ChatGPT 告诉我这一点以及互联网上的一些来源)。为什么我不能使用普通的 spline_model 进行绘图?

library(dplyr) #Datenmanipulation
library(DataExplorer) #DatenExplore
library(skimr) #Datenüberblick
library(lmtest) #Regression
library(olsrr)
library(jtools)
library(moments)
library(highcharter) #Diagramme keine gewerbliche Nutzung
library(ggstatsplot)
library(ggplot2)
library(graphics) 
library(mgcv) #spline
library(ggeffects) #GAM <- Spline
library(DiagrammeR) #Kausalitätsdiagramm
library(splines) #Splines

data_path <- "https://raw.githubusercontent.com/juanitorduz/website_projects/master/data/sales_dag.csv"
data <- read.csv(data_path)
data %>% select(visits, discount, sales) -> data_clean
spline_model <- lm(sales ~ bs(data_clean$visits, df = 3, knots = 3)+ data_clean$discount -1, data = data_clean) #spline

visits_range <- range(data_clean$visits) #MinMax der Var
visits_seq <- seq(from=visits_range[1], to=visits_range[2]) #Sequenz von Min nach Max neu
spline_model_pred<-predict(spline_model, newdata = data.frame(visits=visits_seq),se=T) #Vorhersage neu berechnen

plot(data_clean$visits, data_clean$sales, main="Beobachtete vs. Vorhergesagte Werte", xlab="Visits (IV)", ylab="Sales (DV)")
lines(visits_seq, spline_model_pred$fit, col = "red", lwd = 3)
r spline
1个回答
0
投票

由于您在

lm()
函数中使用“数据”术语,因此您需要简化表达式:

#spline
spline_model <- lm(sales ~ bs(visits, df = 3, knots = 3)+ discount -1, data = data_clean) 

predict()
函数中的错误是由于它正在寻找变量“data_clean$visits”,它是全局环境,而不是“new_data”数据框中的列。

© www.soinside.com 2019 - 2024. All rights reserved.