الانحدار الخطي مع تقاطع ثابت معروف في R
-
27-10-2019 - |
سؤال
أريد حساب الانحدار الخطي باستخدام الدالة lm() في R.بالإضافة إلى ذلك، أريد الحصول على ميل الانحدار، حيث أعطي التقاطع بشكل صريح lm()
.
لقد وجدت مثالاً على الإنترنت وحاولت قراءة مساعدة R "؟lm" (للأسف لا أستطيع فهمها)، لكنني لم أنجح.هل يمكن لأحد أن يقول لي أين خطأي؟
lin <- data.frame(x = c(0:6), y = c(0.3, 0.1, 0.9, 3.1, 5, 4.9, 6.2))
plot (lin$x, lin$y)
regImp = lm(formula = lin$x ~ lin$y)
abline(regImp, col="blue")
# Does not work:
# Use 1 as intercept
explicitIntercept = rep(1, length(lin$x))
regExp = lm(formula = lin$x ~ lin$y + explicitIntercept)
abline(regExp, col="green")
شكرا لمساعدتكم.
المحلول
يمكنك طرح التقاطع الصريح من الانحدار ثم احتواء النموذج الخالي من التقاطع: Genacodicetagpre
يمنع رمز الترقيم الوراثي ملاءمة التقاطع بواسطة رمز الترقيم العام.
تعديل لرسم الملاءمة ، استخدم Genacodicetagpre
ملاحظةتبدو المتغيرات في النموذج الخاص بك في الاتجاه الخاطئ: عادةً ما يكون رمزًا ترميزيًا عامًا ، وليس رمزًا ترميزًا عامًا (أي يجب أن يتجه الانحدار إلى اليسار وأن يكون الانحدار على اليمين).
نصائح أخرى
أرى أنك قبلت الحل باستخدام I ().كنت أعتقد أن الحل القائم على الإزاحة () سيكون أكثر وضوحًا ، لكن الأذواق تختلف وبعد العمل من خلال حل الأوفست يمكنني أن أقدر الاقتصاد في حل I ():
Genacodicetagpreلقد استخدمت كلاً من الإزاحة وI().أجد أيضًا أن التعامل مع الإزاحة أسهل (مثل BondedDust) حيث يمكنك ضبط التقاطع الخاص بك.
بافتراض أن التقاطع هو 10.
plot (lin$x, lin$y)
fit <-lm(lin$y~0 +lin$x,offset=rep(10,length(lin$x)))
abline(fit,col="blue")