ฉันจะตีความเมทริกซ์ความแปรปรวนร่วมได้อย่างไรจากเส้นโค้งที่พอดี


15

ฉันไม่ค่อยเก่งเรื่องสถิติดังนั้นขอโทษถ้านี่เป็นคำถามง่าย ๆ ฉันกำลังกระชับโค้งให้ข้อมูลบางส่วนและบางครั้งข้อมูลของฉันพอดีดีที่สุดชี้แจงเชิงลบในรูปแบบ* E ( - * x ) + Cและบางครั้งพอดีอยู่ใกล้กับ* E ( - * x 2 ) + อย่างไรก็ตามบางครั้งทั้งสองล้มเหลวและฉันต้องการที่จะถอยกลับไปเป็นแบบเชิงเส้น คำถามของฉันคือฉันจะทราบได้อย่างไรว่าแบบจำลองใดที่เหมาะกับข้อมูลชุดใดชุดหนึ่งที่ดีที่สุดจากเมทริกซ์ความแปรปรวนร่วม - ความแปรปรวนร่วมที่ส่งคืนจากa* * * *อี(-* * * *x)+a* * * *อี(-* * * *x2)+ฟังก์ชั่นscipy.optimize.curve_fit () ? ฉันเชื่อว่าความแปรปรวนเป็นหนึ่งในเส้นทแยงมุมของเมทริกซ์นี้ แต่ฉันไม่แน่ใจว่าจะตีความมันอย่างไร

UPDATE: ตามคำถามที่คล้ายกันฉันหวังว่าเมทริกซ์ความแปรปรวนร่วมแปรปรวนสามารถบอกได้ว่าแบบจำลองใดที่ฉันพยายามดีที่สุดเหมาะกับข้อมูล (ฉันพยายามใส่ชุดข้อมูลจำนวนมากกับหนึ่งในสามรุ่นนี้)

เมทริกซ์ที่ได้จะมีลักษณะเช่นนี้สำหรับตัวอย่างที่กำหนด:

pcov_lin 
[[  2.02186921e-05  -2.02186920e-04]
 [ -2.02186920e-04   2.76322124e-03]]
pcov_exp
[[  9.05390292e+00  -7.76201283e-02  -9.20475334e+00]
 [ -7.76201283e-02   6.69727245e-04   7.90218415e-02]
 [ -9.20475334e+00   7.90218415e-02   9.36160310e+00]]
pcov_exp_2 
[[  1.38338049e-03  -7.39204594e-07  -7.81208814e-04]
 [ -7.39204594e-07   8.99295434e-09   1.92970700e-06]
 [ -7.81208814e-04   1.92970700e-06   9.14746758e-04]]

นี่คือตัวอย่างของสิ่งที่ฉันทำ:

import numpy as np
import matplotlib.pyplot as plt
import scipy as sp
import scipy.optimize

def exp_func(x, a, b, c):
    return a * np.exp(-b * x) + c

def exp_squared_func(x, a, b, c):
    return a * np.exp(-b * x*x*x) + c

def linear_func(x, a, b):
    return a*x + b

def main():
    x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], np.float)
    y = np.array([1, 1, 1, 1, 0.805621, 0.798992, 0.84231, 0.728796, 0.819471, 0.570414, 0.355124, 0.276447, 0.159058, 0.0762189, 0.0167807, 0.0118647, 0.000319948, 0.00118267, 0, 0, 0], np.float)

    p0 = [0.7746042467213462, 0.10347274384077858, -0.016253458007293588]
    popt_lin, pcov_lin      = scipy.optimize.curve_fit(linear_func, x, y)
    popt_exp, pcov_exp      = scipy.optimize.curve_fit(exp_func, x, y)
    popt_exp_2, pcov_exp_2  = scipy.optimize.curve_fit(exp_squared_func, x, y)

    plt.figure()
    plt.plot(x, y, 'ko', label="Original data")
    plt.plot(x, linear_func(x, *popt_lin), 'r-', label='linear')
    plt.plot(x, exp_func(x, *popt_exp), 'b-', label='exponential')
    plt.plot(x, exp_squared_func(x, *popt_exp_2), 'g-', label='exponential squared')
    plt.legend()
    plt.show()

if __name__ == '__main__':
    main()

เป็นเรื่องดีที่คุณเชื่อมโยงกับคำถาม CV นั้นและดังนั้นไปยังเธรดความคิดเห็นที่สำคัญ (b / w rolando2, Frank Harrell, ... ) ที่ตั้งคำถามว่าเหมาะสมหรือไม่ที่จะเลือกรูปแบบการโพสต์ตามความเหมาะสม อาจเป็นการดีกว่าถ้าใช้ความรู้เดิมของระบบในการเลือกแบบจำลอง
Aman

คำถามอื่น ๆ เกี่ยวกับ CV อาจเป็นประโยชน์: stats.stackexchange.com/questions/50830/…
Aman

สิ่งนี้อาจเป็นประโยชน์ในการทำความเข้าใจวิธีการตีความเมทริกซ์ร่วมความแปรปรวนร่วม. คำถามที่พบบ่อยเกี่ยวกับการทดสอบ / 10/10959 - ฉันจะบอกว่าค่าของแบบจำลองที่สามมีขนาดเล็กลง
user4581

คำตอบ:


4

ในฐานะที่เป็นชี้แจงชี้แจงตัวแปรpcovจากscipy.optimize.curve_fitคือความแปรปรวนร่วมประมาณของการประมาณพารามิเตอร์ที่พูดอย่างหลวม ๆ ให้ข้อมูลและรูปแบบเท่าไหร่ข้อมูลที่มีอยู่ในข้อมูลเพื่อกำหนดมูลค่าของพารามิเตอร์ในรูปแบบที่กำหนด ดังนั้นจึงไม่ได้บอกคุณจริง ๆ ว่าแบบจำลองที่เลือกนั้นดีหรือไม่ ดูสิ่งนี้ด้วย

ปัญหาของแบบจำลองที่ดีย่อมเป็นปัญหาที่ยาก ตามที่ถกเถียงกันโดยนักสถิติ

ทุกรุ่นผิด แต่บางรุ่นก็มีประโยชน์

ดังนั้นเกณฑ์ที่ใช้ในการเปรียบเทียบแบบจำลองที่แตกต่างกันขึ้นอยู่กับสิ่งที่คุณต้องการบรรลุ

ตัวอย่างเช่นถ้าคุณต้องการที่เส้นโค้งคือ "ใกล้ที่สุดเท่าที่เป็นไปได้" ข้อมูลที่คุณสามารถเลือกรูปแบบซึ่งจะช่วยให้เล็กที่สุดที่เหลือ ในกรณีของคุณมันจะเป็นแบบจำลองfuncและพารามิเตอร์โดยประมาณpoptที่มีค่าต่ำสุดเมื่อคำนวณ

numpy.linalg.norm(y-func(x, *popt))

อย่างไรก็ตามหากคุณเลือกรุ่นที่มีพารามิเตอร์มากกว่าส่วนที่เหลือจะลดลงโดยอัตโนมัติในราคาที่สูงกว่าความซับซ้อนของโมเดล ดังนั้นมันกลับมาที่เป้าหมายของโมเดล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.