遇见数据集

Belief in Divine Intervention vs Psychological Resilience

收藏
Mendeley Data2026-04-18 收录
官方服务:

资源简介:

import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt # Step 1: Simulate data np.random.seed(42) n_samples = 120 belief_in_divine = np.random.uniform(1, 10, n_samples) psychological_resilience = belief_in_divine + np.random.normal(0, 1, n_samples) # Adding noise # Create DataFrame experiment_df = pd.DataFrame({'Belief_in_Divine': belief_in_divine, 'Psychological_Resilience': psychological_resilience}) # Step 2: Visualize the relationship with a scatter plot plt.figure(figsize=(8, 6)) sns.scatterplot(x='Belief_in_Divine', y='Psychological_Resilience', data=experiment_df) plt.title('Belief in Divine Intervention vs. Psychological Resilience') plt.xlabel('Belief in Divine Intervention') plt.ylabel('Psychological Resilience') # Step 3: Add regression line equation to the plot plt.text(3, 15, r'$Y = MX + C$', fontsize=12) # Step 4: Generate individual plots for each regression line for i in range(5): # Create a new figure for each line plt.figure(figsize=(8, 6)) # Randomly select slope and intercept values slope = np.random.uniform(0.5, 1.5) intercept = np.random.uniform(-1, 2) # Plot regression line x_values = np.linspace(min(belief_in_divine), max(belief_in_divine), 100) y_values = slope * x_values + intercept plt.plot(x_values, y_values, label=f'Line {i+1}: Y = {slope:.2f}X + {intercept:.2f}') # Add scatter plot on top sns.scatterplot(x='Belief_in_Divine', y='Psychological_Resilience', data=experiment_df) plt.title(f'Regression Line {i+1}: Belief in Divine Intervention vs. Psychological Resilience') plt.xlabel('Belief in Divine Intervention') plt.ylabel('Psychological Resilience') plt.legend() plt.grid(True) plt.show() # Step 5: Correlation Analysis correlation_coefficient = np.corrcoef(experiment_df['Belief_in_Divine'], experiment_df['Psychological_Resilience'])[0, 1] print("Correlation Coefficient:", correlation_coefficient) # Step 6: Perform Linear Regression X = experiment_df['Belief_in_Divine'].values.reshape(-1, 1) y = experiment_df['Psychological_Resilience'].values # Calculate coefficients X = np.column_stack((np.ones_like(X), X)) # Add intercept term coefficients = np.linalg.lstsq(X, y, rcond=None)[0] slope = coefficients[1] intercept = coefficients[0] print("Slope (m):", slope) print("Intercept (c):", intercept) # Step 7: Plot regression line plt.figure(figsize=(8, 6)) plt.scatter(experiment_df['Belief_in_Divine'], experiment_df['Psychological_Resilience']) x_values = experiment_df['Belief_in_Divine'].values # Convert to numpy array plt.plot(x_values, slope * x_values + intercept, color='red', label='Regression Line') plt.title('Regression Analysis: Belief in Divine Intervention vs. Psychological Resilience') plt.xlabel('Belief in Divine Intervention') plt.ylabel('Psychological Resilience') plt.legend() plt.grid(True) plt.show()

# 导入所需工具库:Python数据分析库Pandas(Pandas,别名pd)、数值计算库NumPy(NumPy,别名np)、统计可视化库Seaborn(Seaborn,别名sns)、Matplotlib绘图库的pyplot模块(Matplotlib,别名plt) import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt # 步骤1:模拟实验数据集 # 设置随机种子以保证实验结果可复现 np.random.seed(42) # 设定总样本量为120 n_samples = 120 # 生成1~10区间内的均匀分布随机数,作为「神意信仰(Belief in Divine Intervention)」变量 belief_in_divine = np.random.uniform(1, 10, n_samples) # 为神意信仰变量添加均值为0、标准差为1的正态分布噪声,得到「心理韧性(Psychological Resilience)」变量 psychological_resilience = belief_in_divine + np.random.normal(0, 1, n_samples) # 将模拟得到的变量整合为实验数据框 experiment_df = pd.DataFrame({'Belief_in_Divine': belief_in_divine, 'Psychological_Resilience': psychological_resilience}) # 步骤2:绘制散点图以展示变量间相关性 # 设置绘图画布尺寸为8英寸×6英寸 plt.figure(figsize=(8, 6)) # 使用Seaborn绘制散点图,横轴为神意信仰,纵轴为心理韧性,数据来源为实验数据框 sns.scatterplot(x='Belief_in_Divine', y='Psychological_Resilience', data=experiment_df) # 设置图表标题:神意信仰与心理韧性的关系 plt.title('神意信仰与心理韧性的关系') # 设置横轴标签:神意信仰 plt.xlabel('神意信仰') # 设置纵轴标签:心理韧性 plt.ylabel('心理韧性') # 步骤3:在图表中添加回归方程格式文本 plt.text(3, 15, r'$Y = MX + C$', fontsize=12) # 步骤4:生成5条模拟回归线的独立可视化图表 for i in range(5): # 为每条回归线创建独立画布 plt.figure(figsize=(8, 6)) # 随机生成回归直线的斜率与截距 slope = np.random.uniform(0.5, 1.5) intercept = np.random.uniform(-1, 2) # 生成回归直线的x轴取值序列 x_values = np.linspace(min(belief_in_divine), max(belief_in_divine), 100) # 根据斜率与截距计算对应的y轴取值 y_values = slope * x_values + intercept # 绘制回归直线,并添加图例标签 plt.plot(x_values, y_values, label=f'Line {i+1}: Y = {slope:.2f}X + {intercept:.2f}') # 在当前画布上叠加实验数据的散点图 sns.scatterplot(x='Belief_in_Divine', y='Psychological_Resilience', data=experiment_df) # 设置当前图表标题:第{i+1}条回归线——神意信仰与心理韧性的关系 plt.title(f'第{i+1}条回归线:神意信仰与心理韧性的关系') # 设置横轴标签:神意信仰 plt.xlabel('神意信仰') # 设置纵轴标签:心理韧性 plt.ylabel('心理韧性') # 显示图例 plt.legend() # 开启网格线 plt.grid(True) # 展示当前图表 plt.show() # 步骤5:执行相关性分析 # 计算神意信仰与心理韧性的皮尔逊相关系数 correlation_coefficient = np.corrcoef(experiment_df['Belief_in_Divine'], experiment_df['Psychological_Resilience'])[0, 1] # 打印计算得到的相关系数 print("相关系数:", correlation_coefficient) # 步骤6:执行线性回归分析 # 将神意信仰变量重塑为二维数组,作为自变量X X = experiment_df['Belief_in_Divine'].values.reshape(-1, 1) # 将心理韧性变量作为因变量y y = experiment_df['Psychological_Resilience'].values # 为自变量X添加截距项(全1列) X = np.column_stack((np.ones_like(X), X)) # 使用最小二乘法求解线性回归系数 coefficients = np.linalg.lstsq(X, y, rcond=None)[0] # 提取回归斜率 slope = coefficients[1] # 提取回归截距项 intercept = coefficients[0] # 打印计算得到的斜率 print("斜率(m):", slope) # 打印计算得到的截距项 print("截距(c):", intercept) # 步骤7:绘制最终的线性回归可视化图表 plt.figure(figsize=(8, 6)) # 绘制实验数据的散点图 plt.scatter(experiment_df['Belief_in_Divine'], experiment_df['Psychological_Resilience']) # 将神意信仰变量转换为NumPy数组 x_values = experiment_df['Belief_in_Divine'].values # 根据回归系数绘制红色回归直线,并添加图例标签 plt.plot(x_values, slope * x_values + intercept, color='red', label='回归直线') # 设置图表标题:回归分析——神意信仰与心理韧性的关系 plt.title('回归分析:神意信仰与心理韧性的关系') # 设置横轴标签:神意信仰 plt.xlabel('神意信仰') # 设置纵轴标签:心理韧性 plt.ylabel('心理韧性') # 显示图例 plt.legend() # 开启网格线 plt.grid(True) # 展示最终图表 plt.show()

创建时间:
2024-05-07
二维码
社区交流群
二维码
科研交流群
商业服务