全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 悬赏大厅 求助成功区
738 8
2024-04-22
悬赏 1 个论坛币 已解决
# 没找到合适的数据 自己造的假数据# 加载数据


# 自变量
# X1
X1 = np.random.normal(0, 1, 365)
# X2
X2 = np.random.normal(0, 1, 365)
# X3
X3 = np.random.normal(0, 1, 365)
# 序号
id = np.arange(0,365,1)
print(type(X3))
# 因变量特征y为 连续变量
y = 0.5 * X1 +  0.25 * X2 + 0.75* X3  + np.random.normal(0, 0.5, 365) # (e是从均值为0 标准差为0.5的正态分布中生成的随机噪声)
data = pd.DataFrame(data={'id': id,'x1': X1,'x2':X2,'x3':X3,'y':y})
print(data.head())
"""
      id       x1             x2            x3             y
0   0 -0.667001 -0.489524  3.587378  1.878713
1   1 -0.550990  1.088019  0.620712 -0.602663
2   2  0.606812 -1.330362 -0.354676  0.510342
3   3  0.427700 -1.479058  1.461817  0.934452
4   4  0.526069 -0.593826 -0.471412 -0.096949
"""

# 计算
formula = 'y ~x1 + x2+ x3'
model = sm.MixedLM.from_formula(formula, data, groups=data['id'])
result = model.fit(maxiter=1000,method='lbfgs')  # 例如,尝试使用LBFGS优化算法


# 结果
"""
   Mixed Linear Model Regression Results
=======================================================
Model:            MixedLM Dependent Variable: y        
No. Observations: 365     Method:             REML     
No. Groups:       365     Scale:              0.1269   
Min. group size:  1       Log-Likelihood:     -276.4887
Max. group size:  1       Converged:          Yes      
Mean group size:  1.0                                 
-------------------------------------------------------
              Coef. Std.Err.   z    P>|z| [0.025 0.975]
-------------------------------------------------------
Intercept     0.020    0.026  0.751 0.452 -0.032  0.072
x1            0.508    0.021 23.949 0.000  0.467  0.550
x2            0.237    0.026  9.112 0.000  0.186  0.288
x3            0.757    0.019 39.281 0.000  0.719  0.795
Group Var     0.127                                    
=======================================================
"""



#  &&& 俺是不完美的分隔线 &&&

# 问题

'''
截距  Intercept  P 值 大于0.05
如果是真实数据 模型是否还有解释效力 ? 如何避免 ? 谢谢

'''




最佳答案

Raymond.K 查看完整内容

从你的DGP来看,并不包含截距项“y = 0.5 * X1 + 0.25 * X2 + 0.75* X3 + np.random.normal(0, 0.5, 365)”因此回归结果截距项不显著反而是对的。另外看你使用模型的目的是什么,因果推断的话,一般不太关注截距项,只关注(控制其他条件不变时的)AME
二维码

扫码加我 拉你入群

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

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

全部回复
2024-4-22 13:31:31
从你的DGP来看,并不包含截距项“y = 0.5 * X1 +  0.25 * X2 + 0.75* X3  + np.random.normal(0, 0.5, 365)”因此回归结果截距项不显著反而是对的。另外看你使用模型的目的是什么,因果推断的话,一般不太关注截距项,只关注(控制其他条件不变时的)AME
二维码

扫码加我 拉你入群

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

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

2024-4-23 20:15:27
knell 发表于 2024-4-22 13:31
# 没找到合适的数据 自己造的假数据# 加载数据
谢谢分享     
二维码

扫码加我 拉你入群

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

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

2024-4-25 22:16:50
Raymond.K 发表于 2024-4-24 20:01
从你的DGP来看,并不包含截距项“y = 0.5 * X1 +  0.25 * X2 + 0.75* X3  + np.random.normal(0, 0.5, 365 ...
添加一个新 数据进行预测
new_athlete = pd.DataFrame({
    'x1': [1.765604],
    'x2': [-0.988498],
    #'x3': [0.092736],
    # 'x3': [0],  
    'id': [id + 1]  # 随便给一个新的AthleteID
})


predicted_performance = result.predict(new_athlete)
print("值:", predicted_performance.values[0])

报错
Error evaluating factor: ValueError: setting an array element with a sequence.
    y ~x1 + x2 + x3 + (1|id)
错在哪里? 没明白什么问题
二维码

扫码加我 拉你入群

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

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

2024-4-25 22:18:52
Raymond.K 发表于 2024-4-24 20:01
从你的DGP来看,并不包含截距项“y = 0.5 * X1 +  0.25 * X2 + 0.75* X3  + np.random.normal(0, 0.5, 365 ...
就是推断  除了推断还能做什么类型的分析? 这个我没想过 ?
二维码

扫码加我 拉你入群

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

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

2024-4-26 10:32:30
knell 发表于 2024-4-25 22:18
就是推断  除了推断还能做什么类型的分析? 这个我没想过 ?
还有预测啊,有截距项和无截距项模型预测结果可能相差很大
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群